2012-04-30 12 views
2

init(またはinitWith)を使用してプロパティに値を代入したいときにARCを導入する前に、私は単にretain(init内でプロパティセッターを使用したくないという結果として)を使用しました。 ARC(再びセッターを使用しない)でARCを使用して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; 
} 

が、これはデータモデルプロパティにnewModelを割り当てるための正しい方法は何ですか?私の推測では、コンパイラ(ARCを使用)は、プロパティが強く定義され、プロパティを正しく設定していることがわかります。これが正しければ私は興味がありますか?

// 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

ありがとう、ありがとうございました。 – fuzzygoat

+0

の可能な複製[私はARCを使ってinitメソッドのself.propertyを参照する必要がありますか?](http://stackoverflow.com/questions/8056188/should-i-refer-to-self-property-in-the-init -method-with-arc) –

答えて

0

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

関連する問題