3

多くのサイトで、ARCを使用する場合でも配列などを無効にする必要があることを確認しましたが、自動だと思っていました...そこでいくつか質問があります。

  • いつ記憶を気にする必要があり、何をすべきですか?

  • たとえば、2ウィンドウアプリ(メインウィンドウ+ 2番目のウィンドウ)があり、2番目のウィンドウを呼び出して配列がいっぱいになった場合、閉じてメインウィンドウに戻るときは、array = nilを指定する必要がありますか?または、ウィンドウが閉じたときにそのARCは自動的に実行されますか?

前もって感謝します

4

2 に答える 2

2

配列を無効にすることで、その配列は不要になり、iOSが安全にクリーンアップできることをARCに伝えます。多くの形式のiOSプログラミングでは、nilに対するチェックが重要であるため、配列を無効にすることもお勧めします。

はい、ARCにすべてを処理させることができますが、iOSがそれを使い終わったらすぐにメモリをクリーンアップすることもできます。また、適切なnil設定ステートメントは、自己文書化の良い形式になる可能性があることも付け加えておきます。

于 2012-11-27T16:55:25.190 に答える
1

ARCはObjective-cの開発において大きな進歩を遂げていますが、ARCを使用する場合でも、メモリ管理には細心の注意を払う必要があります。

デバイスのメモリを実際に浪費しないように詳細を見る必要があるため、この機能を最大限に活用するには、ARCに関するWWDC2011のビデオを視聴することをお勧めします。

ARCを最大限に活用するための最も重要なポイントは、1つのコントローラーが別のコントローラーを参照するなど、循環参照がないことを確認することです。両方に強い参照があります。一方のコントローラーを破壊したと思うと、もう一方はそれを保持します。 、そうすると、メモリが解放されなくなります。

もう1つの重要な点は、これ以上オブジェクトは必要ないことをコンパイラーに通知する必要があることです。これが、配列をnilに設定する必要がある理由です。そのため、コンパイラーは、配列を解放するコマンドを追加するだけです。 ARCは単なる自動参照カウントであり、実行時にではなくコンパイラによって実行されるためです。これで、コンパイラがリリース呼び出しを追加します。

だからあなたのポイントに答える:

1-アークには、もう使用していないオブジェクトをnilに設定するなど、従わなければならないいくつかのルールがあるため、常にメモリを気にする必要があります。

2-あなたの例では、いくつかの点に注意する必要があります。最初に、2番目のウィンドウへの参照がないことを確認する必要があります。また、Objective-cのため、配列をnilに設定する必要があります。ガベージコレクターはありません。ちょうど今、参照カウントは明示的ではありません。

于 2012-11-27T17:17:48.920 に答える