我正在研究Apple 的Your Second iOS App。该项目基于 ARC。
在研究示例时,我对示例中的以下代码有疑问:
// header
@interface BirdSightingDataController : NSObject
@property (nonatomic, copy) NSMutableArray *masterBirdSightingList;
@end
// implementation
- (void)setMasterBirdSightingList:(NSMutableArray *)newList {
if (_masterBirdSightingList != newList) {
_masterBirdSightingList = [newList mutableCopy];
}
}
- (void)initializeDefaultDataList {
NSMutableArray *sightingList = [[NSMutableArray alloc] init];
self.masterBirdSightingList = sightingList;
…
}
我不知道为什么这段代码会覆盖masterBirdSightingList
.
该masterBirdSightingList
属性是类型的NSMutableArray
,并被复制到_masterBirdSightingList
实例变量中,该实例变量也是类型NSMutableArray
。我认为这是完美的。
为什么在_masterBirdSightingList = [newList mutableCopy];
这里?以防万一setMasterBirdSightingList:
用 type 的参数调用NSArray
?