次のことが当てはまりますか。
弱い=unsafe_unretain=割り当て
強い=保持
それがなぜそれらが複製されるのか?どちらを選ぶべきですか?
次のことが当てはまりますか。
弱い=unsafe_unretain=割り当て
強い=保持
それがなぜそれらが複製されるのか?どちらを選ぶべきですか?
いいえ、それは真実ではありません。weak
これは、オブジェクトが保持されないことを意味します。さらに、オブジェクトの割り当てが解除されると、変数/プロパティは自動的にnilに設定されます。unsafe_unretained
オブジェクトは保持されませんが、自動ゼロ調整がないことを意味します。strong
とretain
は同等です。
strong
:変数はそのスコープの間保持されます。保持は、strongの同義語としても機能します。copy
:コピーを作成して保持します。weak
:所有権を主張せずにオブジェクトを指すために使用します。オブジェクトが解放されると、ポインタはゼロになります。unsafe_unretained
:weakと同じですが、リリース後にポインタをゼロにしません。assign
:プリミティブ値。iOS 4をターゲットにしている場合、weakを使用することはできません。代わりにunsafe_unretainedを使用してください。
ARCの前は、プロパティのデフォルトが割り当てられていましたが、現在はデフォルトが強力です。
assign
割り当てているだけなので、通常はやint
などのプリミティブに使用されます。保持されていないことがわかっているObjective-Cオブジェクトに使用され、それが安全でない理由を理解します。はiOS5で導入された新機能で、に似ていますが、ARCとはセマンティクスが異なります。詳細については、Appleの高度なメモリ管理ガイドをご覧ください。double
unsafe_unretained
weak
unsafe_unretained
unsafe_unretained
実際には、 iOS 5以降をターゲットにしている場合は、ほとんど使用しません。
weak
!=unsafe_unretain
weak
nil
ポインタが割り当て解除された場合、ポインタは自動的にに変換されます。
今後は、オブジェクトとプリミティブ型にstrong
&を使用する必要がありますweak
assign