次のことが当てはまりますか。
弱い=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の高度なメモリ管理ガイドをご覧ください。doubleunsafe_unretainedweakunsafe_unretained
unsafe_unretained実際には、 iOS 5以降をターゲットにしている場合は、ほとんど使用しません。
weak!=unsafe_unretain
weaknilポインタが割り当て解除された場合、ポインタは自動的にに変換されます。
今後は、オブジェクトとプリミティブ型にstrong&を使用する必要がありますweakassign