最終更新:2013-01-10 (木) 10:45:24 (4483d)
weak
Top / weak
__weak?修飾子に対応するプロパティ属性
- 対象オブジェクトに対する弱い(所有権を伴わない)関係がある旨を指定
- 対象オブジェクトが割り当て解除されると、プロパティ値は自動的にnilになりる
- (弱いプロパティは、Mac OS X 10.6やiOS 4では未対応なので、代わりにassignを使う)。
例
- @property (weak, nonatomic) IBOutlet UIButton *button;
- Xcode/Assistant Editorでプロパティを生成するとこうなる (Xcode 4.5)
使いどころ
- 一般的なOutlet(IBOutlet)にはweakプロパティを使う
- Interface Builderなどを用いて作成したOutletは、一般的に別のview(例えばUIViewControllerのviewなど)のsubviewであることがほとんど
- したがって、これらのOutletのオーナーとなるのはsuperviewのみで十分 (自身がOutletのオーナーになる必要がない)
- ビューからデリゲートの参照
互換性
- weak修飾子はiOS 5以降でしか利用できない
- iOS 4 でも動作するアプリケーションにするためには、weak修飾子を利用するところでunsafe_unretained修飾子を使う必要がある
変数
- __weak?