我正在关注官方教程Your second iOS App:Storyboard它告诉我要像这样声明一个属性masterBirdSightingList(只是一个具体的例子,不需要知道上下文):
@property (nonatomic, copy) NSMutableArray *masterBirdSightingList;
请注意,有一个属性copy。然后合成这个属性:
@synthesize masterBirdSightingList = _masterBirdSightingList;
接下来是一种让我感到困惑的初始化方法:
- (void)initializeDefaultDataList {
NSMutableArray *sightingList = [[NSMutableArray alloc] init];
self.masterBirdSightingList = sightingList;
[self addBirdSightingWithName:@"Pigeon" location:@"Everywhere"];
}
肯定会为空间分配SightingList,然后将其分配给masterBirdSightingList 属性。但是,该属性具有复制属性。这意味着实例变量_masterBirdSightingList将被分配给另一个空间以保存来自SightingList的东西。为什么?为什么不直接为这样的属性分配空间:
self.masterBirdSightingList = [[NSMutableArray alloc] init];