在我想要使用init(或initWith)为属性赋值时引入ARC之前我只使用了retain(因为不想在init中使用属性setter)。
// 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)会看到该属性被定义为strong并正确设置了该属性。如果这是对的,我很好奇吗?
// Using ARC
// @property (nonatomic, strong) DataModel *dataModel;
// @synthesize dataModel = _dataModel;
- (id)initWithDataModel:(id)newModel {
self = [super init];
if(self) {
_dataModel = newModel;
}
return self;
}
答案 0 :(得分:0)
是的,这有效。 它已经是一个综合属性。 您可以使用属性访问器或合成的直接访问ivar名称。