私は公式のチュートリアルYour second iOS App:Storyboardに従っていますが、次のようにプロパティmasterBirdSightingListを宣言するように指示されました(特定の例であり、コンテキストを知る必要はありません):
@property (nonatomic, copy) NSMutableArray *masterBirdSightingList;
属性copyがあることに注意してください。そして、このプロパティを合成します:
@synthesize masterBirdSightingList = _masterBirdSightingList;
次に、私を混乱させた init メソッドが 1 つあります。
- (void)initializeDefaultDataList {
NSMutableArray *sightingList = [[NSMutableArray alloc] init];
self.masterBirdSightingList = sightingList;
[self addBirdSightingWithName:@"Pigeon" location:@"Everywhere"];
}
間違いなく、sightingList がスペースに割り当てられ、masterBirdSightingList プロパティに割り当てられます。ただし、プロパティにはコピー属性があります。これは、インスタンス変数_masterBirdSightingListが、 sightingListからのものを保持するために別のスペースに割り当てられることを意味します。なんで?次のようにプロパティにスペースを直接割り当てないでください:
self.masterBirdSightingList = [[NSMutableArray alloc] init];