2

としてテーブル ビューがありIBOutlet、デフォルトで XCode はそのプロパティをstrongではなくに設定しますweak。「受信メモリ警告」メッセージが表示されることがあります。そこで、多くのプロパティを から に変更しようとしましstrongweakが、プロセスに影響はないようで、スムーズに動作します。コンセントを弱く設定する必要がありますか、それとも間違っていますか?

そして最も重要なことは、メソッドですべてのプロパティを設定する必要があるか、それともs のみを設定する必要があるかです。nilviewDidUnloadIBOutlet

4

2 に答える 2

1

Strongプロパティのみをnilin に設定する必要がありviewDidUnloadます。Weak宛先オブジェクトの割り当てが解除されると、プロパティは自動的に Nil に設定されます。

IBOutletstrong要件に合わせて、またはweak要件に基づいて設定できます。

直面している警告の問題について、詳細とコードを提供できますか?

Josh が提供するリンクとは別に、このトピックに関連する SO に関する多くの投稿があります。いくつかは以下のとおりです。

IBOutlet およびその他の弱いまたは強い

Objective-C で宣言された @property 属性 (nonatomic、copy、strong、weak)

詳細な説明は、次の場所にあります。

http://www.raywenderlich.com/5677/beginning-arc-in-ios-5-part-1

このトピックに関する Apple ドキュメントは、http: //developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html#//apple_ref/doc/uid/TP30001163-CH17にあります。 -SW1

于 2012-07-07T09:50:01.317 に答える
0

「親が子オブジェクトへの参照を持っている場合は、強い参照を使用する必要があります。子が親オブジェクトへの参照を持っている場合は、弱参照を使用する必要があります」

一般に、弱参照はメモリ サイクルを処理するときに使用されます。strong を使用する場合は、viewDidUnload で nil を設定する必要があります。これを行わないと、メモリ不足の状態で予期しないリークが発生する可能性があります。ARCがあなたのためにそれをするので、あなたはそれらをdeallocで解放しません。代わりに、ターゲット オブジェクトが破棄されると、これらの値は自動的に nil に設定されるため、その処理は必要ありません。ダングリングポインターはもうありません。

于 2014-05-07T10:58:11.523 に答える