在引入 ARC 之前,当我想使用 init(或 initWith)为属性分配值时,我只使用了 retain(因为不想在 init 中使用属性设置器)。
// Pre ARC using retain
// @property (nonatomic, retain) DataModel *dataModel;
// @synthesize dataModel = _dataModel;
- (id)initWithDataModel:(id)newModel {
self = [super init];
if(self) {
_dataModel = [newModel retain];
}
return self;
}
使用 ARC(同样不使用 setter)这是将 newModel 分配给 dataModel 属性的正确方法吗?我的猜测是编译器(使用 ARC)会看到该属性被定义为强并正确设置该属性。我很好奇这是否正确?
// Using ARC
// @property (nonatomic, strong) DataModel *dataModel;
// @synthesize dataModel = _dataModel;
- (id)initWithDataModel:(id)newModel {
self = [super init];
if(self) {
_dataModel = newModel;
}
return self;
}