Objective-C for iPad, どこに IBOutlet を置いていますか? インスタンス変数宣言か @property 宣言か?違いはありますか?
5 に答える
IBOutletは、ivarのマーカーまたはプロパティ宣言にすることができます。
若干の違いがあります。IBOutletプロパティはアクセスメソッドを経由しますが、IBOutletivarは直接ivarアクセスです。
主な違いは、IBOutletプロパティが保持されている場合は、それを解放する必要があるの-dealloc
に対し、通常はIBOutletivarでは何もする必要がないことです。IBOutletプロパティの利点は、プロパティのすべての便利な機能を利用できることです。
通常はプロパティに配置することが推奨されますが、どちらも有効です。
プロパティとの違いは、外部から利用できることと、getter/setter メソッドが使用されることです。
これにより、非アトミックや保持などのプロパティ修飾子も許可され、通常は IBOutlets に設定されます。
mmalc (間違いなく評判の良い情報源です) は、現在のベスト プラクティスは @property 宣言に置くことだと述べています。彼は、この質問への回答で詳細を (いくつかの警告と共に) 説明しています。
どちらも有効です @property を使用することをお勧めします
私は両方を行い、.m ファイルに合成します。両方が不可欠だとは 100% ではありませんが、害はありません。