2

init (または initWith) を使用してプロパティに値を割り当てたいときに ARC が導入される前は、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を使用すると(セッターを使用せずに)、これは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;
}
4

1 に答える 1

0

はい、これは機能します。すでに合成されたプロパティです。プロパティ アクセサーまたは合成された直接アクセス ivar 名を使用できます。

于 2013-01-05T13:23:09.350 に答える