【问题标题】:Setting properties inside init using ARC?使用ARC在init中设置属性?
【发布时间】:2012-04-30 12:10:02
【问题描述】:

在引入 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;
}

【问题讨论】:

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-11-27
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多