を使用して、バッキング インスタンス変数を設定および取得する、アクセサーと呼ばれる 2 つのメソッド@property
を作成します。@synthesize
アクセサーは、通常のメソッド呼び出しまたはドット表記 ( self.propertyname
) のいずれかを介して呼び出されます。アクセサーは、メモリ管理やその他のタスクを実行する場所を提供します。これは、 / /etc@synthesized
を使用してアクセサーである程度制御できます。の代わりにインスタンス変数の名前を使用して、プロパティがマスクするインスタンス変数に直接アクセスできます。デフォルトでは、インスタンス変数の名前は、アンダースコアが前に付いたプロパティの名前です。アンダースコアは、人々が意図せずにインスタンス変数に誤って直接アクセスするのを防ぎ、名前空間の衝突を防ぐことができます。独自のアクセサーを実装することもできます。nonatomic
copy
self.propertyName
self.myArray //goes through the setter/getter of the property
_myArray //directly accesses backing instance variable while ignoring accessors
myArray //incorrect
バッキング インスタンス変数の名前は、 を使用して変更できることに注意してください@synthesize myPropertyName = myCoolName
。
使用法に関しては、ほとんどの場合、 を使用しますself.thing
。例外は、カスタム セッター/ゲッター (例return _thing
) であり、スタイル セッターを通過したときにオブジェクトに送信されたに対抗するためにdealloc
使用する場所です。アクセサー内でアクセサーを呼び出さない理由は明らかです。望ましくない影響を防ぐためにアクセサを使用しません。[_thing release]
retain
retain
dealloc
編集:手動参照カウントをよりよく理解するのに役立ついくつかの素晴らしいリソースがあります。
- Cocoa と Objective-C で参照カウントを理解する
- メモリ管理プログラミング ガイド (Apple から)
また、iOS 向けに開発する場合は、ARC の使用を検討してください。ARC は自動参照カウントの略です。retain
コードに明示的に追加して呼び出すMRC (Manual Reference Counting) とは異なりrelease
、ARC は保守的に参照カウントを処理し、適切と思われるオブジェクトを保持および解放します。ARC については、以下を参照してください。
- ARC への移行 (Apple から)