strong
__strong修飾子に対応するプロパティ属性です。strong属性を用いたプロパティは参照先オブジェクトのオーナーとなります。
weak
__weak修飾子に対応するプロパティ属性です。__weak修飾子を持った変数と同様、weak属性のプロパティも、参照先のオブジェクトが破棄されたら自動的にnilが代入されます。weak属性を用いたプロパティはオーナーシップ権を持ちません。
weak属性は、delegateやOutletの変数に最適です。
なお、iOS 4では__weak修飾子が使えないため、プロパティのweak属性も使えません。この場合は、後述のunsafe_unretainedを使いましょう。
copy
__strong修飾子に対応しますが、実際にはコピーオブジェクトが代入されます。copy属性を用いたプロパティは参照先オブジェクトのオーナーとなります。
unsafe_unretained
__unsafe_unretaind修飾子に対応するプロパティ属性です。iOS 4では、weak属性が使えないため、オーナーシップ権を持たないプロパティを作成したい場合、こちらを利用する必要があります。
assign
主にスカラー変数(intやBOOLなど)のプロパティ属性として利用されます。
オブジェクトに対して使用することも可能ですが、オーナーシップ権を持たないプロパティを作成したい場合、weak(iOS 5以上)もしくはunsafe_unretained(iOS 4を含む)を利用すべきでしょう。
retain
retain属性も利用することは可能です(strong属性と同じ働きをします)。しかしながら、ARC対応のコードでは、strong属性を使った方が明白でよいでしょう。
ふむふむ
0 件のコメント:
コメントを投稿