使用ARC在init中设置属性?

时间:2012-04-30 12:10:02

标签: iphone objective-c cocoa-touch automatic-ref-counting

在我想要使用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;
}

1 个答案:

答案 0 :(得分:0)

是的,这有效。 它已经是一个综合属性。 您可以使用属性访问器或合成的直接访问ivar名称。