私は iPhone アプリの 2 番目のバージョンを書き始めており、以前の間違いを正そうとしています (Objective-C での最初の試みであるため)。私の質問は「UIViewController が破棄されたときに私がしなければならないこと」に関するものですが、矛盾する答えがいくつかあるようで、正しく理解していることを確認したいと思います。
いくつかの制約:
- このコードは、iOS 5 および iOS 6 デバイスで使用するためのものです
- UIViewControllers はユーザーに表示されなくても通知を受け取る必要があるため、viewWillAppear および viewWillDisappear で NSNotifications を登録および登録解除したくありません。
- 個別の nib ファイルではなく、StoryBoard を使用しています。
上記の制約を考慮すると、次のステートメントは正しいでしょうか?
- ストーリーボードを UIViewControllers に接続する IBOutlets は弱い必要があり、強力な参照がバックグラウンドで作成されます。
- IBOutlets は弱いため、メモリ不足の状況で IBOutlets を nil アウトする必要はありません。
- viewDidUnload は非推奨なので使用しないでください。代わりに didReceiveMemoryWarning を使用する必要があります。この状況では、強力なプロパティ (再計算できる) を無効にするだけで済みます。
- viewDidLoad で NSNotifications に登録することは許容されます。
- ビューが非表示になっても通知を受け取り続けたいので、登録解除するのに最適な場所は dealloc です。didReceiveMemoryWarning で登録解除してもメリットはありません。
ご協力いただきありがとうございます、
ダン