2011-07-24 10 views
1

私は簡単な質問があります:
ここでは、プロジェクトの別のクラスのdataControllerプロパティを使用しない場合、「@property」を使用して合成する必要はありません。 "=" dataController = controllerでの操作、コードの2番目のチャンクのように? :プロパティと合成:このコードでは、 "self"なし?

DataController *controller = [[DataController alloc] init]; 
self.dataController = controller; 
[controller release]; 
rootViewController.dataController = dataController; 

第二1:私たちはクラスの外プロパティを必要としない場合

DataController *controller = [[DataController alloc] init]; 
dataController = controller; 

だから、私たちは、このようにそれを行うことができますか? ありがとう

答えて

3

あなたが一度だけ使用しているのであれば、財産を得ることはあまりありません。値を頻繁に変更した場合(つまり、別のDataControllerを割り当てる場合)、プライベートプロパティでもメモリ管理を簡単にすることができます。

+0

+1 "プライベートプロパティはメモリ管理を簡単にする意味があります。" – albertamg

2

dataControllerが他のクラスで使用されない場合は、合成する必要はありません。そして、はい、あなたはそのクラスの中に作成することができます。 (もちろん、あなたのrootViewControllerであなたのdataControllerもその後、あなたにもあることを処理する必要がある、それへの参照が必要な場合)

dataControllerが保持プロパティである場合は、正しい

+0

ありがとうございました。私は別の質問をすることができますか?あなたが@propertyを許可しても "合成"を書いていないのであれば、動作しますか?私たちは合成せずに "@property"を使うことができますか?ありがとう – Paul

+0

"@property"は関数宣言の作成と同じです。 "@synthesize"は関数定義を作成するのと同じです。したがって、 "@property"だけを使うのは無駄です。 –

+0

ありがとう! – Paul

1

はい、2番目の例はうまくいきます。ただし、dataControllerは、使用されているメソッドのローカル変数ではなく、iVarとして宣言されています。

どちらの例でも、もちろんdeallocメソッドで格納された値を解放する必要があります。

+0

ありがとうMonoloあなたの答え – Paul

関連する問題