0
  • プロパティをARC ありまたは ARC なしの両方の側面nilで設定することの意味は何ですか?viewDidUnload
  • の場合にのみ重要IBOuletsですか?他のプロパティ ( ではないIBOulets) をに設定する必要はありませんnilか?
  • 私がそれをしなければ、どのような結果になる可能性がありますか? 私はnil以前にそれらを設定したことがなく、結果を観察していません。

助けていただければ幸いです。

4

2 に答える 2

1

viewDidUnload で IBOutlets を nil に設定すると、メモリ警告でアウトレットを解放するようにコンパイラに指示します。これは、メモリ警告で ..viewDidUnload と viewcontrollers の didReceiveMemoryWarning が呼び出されるためです。通常、ViewDidUnload で IBOutlets は nil に設定され、didReceiveMemoryWarning プロパティまたはオブジェクトは解放されます.したがって、このような場合、メモリが回復されるため、アプリは機能し続けることができます。それ以外の場合、継続的なプーリングにより、メモリ不足によるクラッシュが発生します。

于 2012-09-17T13:18:47.317 に答える
0

ウェブ上でたくさんの記事を読み、stackoverflow.comで同様の質問をした後、私は次のことを理解しました。

  • viewDidUnloadメモリ不足の状況でコンパイラによって呼び出されます。

  • メソッドでこれらのプロパティをnilに設定する必要があります。これは、で再インスタンス化されviewDidLoadます。ほとんどすべてのIBOutletコンポーネントがこのカテゴリに分類されます。したがって、メソッドでIBOutletsをnilに宣言する方が適切です。そうしないと、継続的なプーリングが発生し、将来的にメモリが不足するためにクラッシュが発生する可能性があります(その間、アプリは実行を継続します)。

  • また、NSString(クラッシュを引き起こす可能性があります)のようなクラスのインスタンスをゼロにするべきではないことも読みました。これは私の経験によると正しいです。しかし、その理由はわかりません。

  • ARCを扱うことは何もありません。プロパティをnilに設定すると、プロパティはメモリ位置の参照を保持しなくなります。

私はそれについてもっと何かを知るようになるたびにこの答えを更新し続けます。

ありがとう。

于 2012-09-17T14:49:37.147 に答える