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;
}