2

次のことが当てはまりますか。

弱い=unsafe_unretain=割り当て

強い=保持

それがなぜそれらが複製されるのか?どちらを選ぶべきですか?

4

4 に答える 4

6

いいえ、それは真実ではありません。weakこれは、オブジェクトが保持されないことを意味します。さらに、オブジェクトの割り当てが解除されると、変数/プロパティは自動的にnilに設定されます。unsafe_unretainedオブジェクトは保持されませんが、自動ゼロ調整がないことを意味します。strongretainは同等です。

于 2012-05-23T14:55:23.987 に答える
2
  • strong:変数はそのスコープの間保持されます。保持は、strongの同義語としても機能します。
  • copy:コピーを作成して保持します。
  • weak:所有権を主張せずにオブジェクトを指すために使用します。オブジェクトが解放されると、ポインタはゼロになります。
  • unsafe_unretained:weakと同じですが、リリース後にポインタをゼロにしません。
  • assign:プリミティブ値。

iOS 4をターゲットにしている場合、weakを使用することはできません。代わりにunsafe_unretainedを使用してください。
ARCの前は、プロパティのデフォルトが割り当てられていましたが、現在はデフォルトが強力です。

于 2012-05-23T14:56:36.740 に答える
2

assign割り当てているだけなので、通常はやintなどのプリミティブに使用されます。保持されていないことがわかっているObjective-Cオブジェクトに使用され、それが安全でない理由を理解します。はiOS5で導入された新機能で、に似ていますが、ARCとはセマンティクスが異なります。詳細については、Appleの高度なメモリ管理ガイドをご覧ください。doubleunsafe_unretainedweakunsafe_unretained

unsafe_unretained実際には、 iOS 5以降をターゲットにしている場合は、ほとんど使用しません。

于 2012-05-23T14:55:20.343 に答える
1

weak!=unsafe_unretain

weaknilポインタが割り当て解除された場合、ポインタは自動的にに変換されます。

今後は、オブジェクトとプリミティブ型にstrong&を使用する必要がありますweakassign

于 2012-05-23T14:55:04.947 に答える