- プロパティをARC ありまたは ARC なしの両方の側面
nilで設定することの意味は何ですか?viewDidUnload - の場合にのみ重要
IBOuletsですか?他のプロパティ ( ではないIBOulets) をに設定する必要はありませんnilか? - 私がそれをしなければ、どのような結果になる可能性がありますか? 私は
nil以前にそれらを設定したことがなく、結果を観察していません。
助けていただければ幸いです。
nilで設定することの意味は何ですか?viewDidUnloadIBOuletsですか?他のプロパティ ( ではないIBOulets) をに設定する必要はありませんnilか?nil以前にそれらを設定したことがなく、結果を観察していません。助けていただければ幸いです。
viewDidUnload で IBOutlets を nil に設定すると、メモリ警告でアウトレットを解放するようにコンパイラに指示します。これは、メモリ警告で ..viewDidUnload と viewcontrollers の didReceiveMemoryWarning が呼び出されるためです。通常、ViewDidUnload で IBOutlets は nil に設定され、didReceiveMemoryWarning プロパティまたはオブジェクトは解放されます.したがって、このような場合、メモリが回復されるため、アプリは機能し続けることができます。それ以外の場合、継続的なプーリングにより、メモリ不足によるクラッシュが発生します。
ウェブ上でたくさんの記事を読み、stackoverflow.comで同様の質問をした後、私は次のことを理解しました。
viewDidUnloadメモリ不足の状況でコンパイラによって呼び出されます。
メソッドでこれらのプロパティをnilに設定する必要があります。これは、で再インスタンス化されviewDidLoadます。ほとんどすべてのIBOutletコンポーネントがこのカテゴリに分類されます。したがって、メソッドでIBOutletsをnilに宣言する方が適切です。そうしないと、継続的なプーリングが発生し、将来的にメモリが不足するためにクラッシュが発生する可能性があります(その間、アプリは実行を継続します)。
また、NSString(クラッシュを引き起こす可能性があります)のようなクラスのインスタンスをゼロにするべきではないことも読みました。これは私の経験によると正しいです。しかし、その理由はわかりません。
私はそれについてもっと何かを知るようになるたびにこの答えを更新し続けます。
ありがとう。