我正在使用Big Nerd Ranch Guide学习Objective-C。 作者使用一个商店,控制器可以从中获取一些数据:
#import "BNRItemStore.h"
#import "BNRItem.h"
@interface BNRItemStore ()
@property(nonatomic) NSMutableArray *privateItems;
@end
@implementation BNRItemStore
+(instancetype)sharedStore {
static BNRItemStore *sharedStore = nil;
if (!sharedStore){
sharedStore = [[BNRItemStore alloc] initPrivate];
}
return sharedStore;
}
-(instancetype)initPrivate {
self = [super init];
if (self) {
_privateItems = [[NSMutableArray alloc] init];
}
return self;
}
我的问题是关于_privateItems = [[NSMutableArray alloc] init];
行:我们为什么要初始化_privateItems
而不是privateItems
?
问候。
答案 0 :(得分:2)
privateItems
是属性名称。每个属性后面都有一个变量,默认名称为_propertyName
。在你的情况下它是_privateItems
。
大多数情况下,您可以使用该属性设置值,如下所示:self.privateItems = [[NSMutableArray alloc] init]
。但是,您不应直接在init
方法中设置属性,这就是作者将值直接设置为变量的原因。