Appleによれば、ビューの内部メモリ管理が十分に改善されているため、コンテンツを破棄することで得られるメリットviewWill/DidUnload
は最小限に抑えられています。さらに、アプリがこれらの通知を適切に処理せず、ビューのアンロードに関連付けられていない「その他の」処理を実行するため、多くのアプリがクラッシュすることを示唆するデータがあります。
最後に、メモリの警告が、メモリ不足のためにアプリが終了する前に表示される最初で唯一の警告として検証されるようになりました。これは、実際にはメモリの問題を処理する場所です。
したがって、基本的には、メソッドviewWillUnload
とviewDidUnload
メソッドを削除するだけです。でメモリの問題を処理しdidReceiveMemoryWarning
、その他のViewController管理を適切な場所で処理します。
編集
質問してもいいですか:それらの「適切な場所」とは何ですか?私は、view [Will /Did]Disappearが完全に適切ではなかった特定の状況でViewdidUnloadを使用していました。ナビゲーションコントローラースタックをさらに下に移動するようなものです。それについてさらに詳しく説明していただけませんか。– dan1one
場合によります。私はそれがあなたが聞きたいものではないことを知っています、しかしそれは真実です:-)
一般に、非対称性は避ける必要があります。したがって、元の操作を「元にした」対称的な方法を使用して、操作を「元に戻す」必要があります。viewDidUnload
一般に、とですべてのタイプの作業didReceiveMemoryWarning
を実行できるはずですdealloc
。
いずれにせよ、これらの場所の両方でそのコードのほとんどを複製する必要があったため、これによって実際に変更が発生することはありません。
「ナビゲーションコントローラースタックをさらに下に移動する」とはどういう意味かわかりません。そのため、有用な応答を提供するには、その例を明確にする必要があります。
を使用する際の問題の1つは、ビューが実際に表示されていたため、またはビューの上viewDidDisappear
にviewDidAppear
あったビューが消えていたために、ビューがいつ表示されたかを知るのが難しいことでした...表示されました。
これらのAPIは、これらの問題に対処するのに役立つはずです。
- (BOOL)isMovingFromParentViewController
- (BOOL)isMovingToParentViewController
- (BOOL)isBeingDismissed
- (BOOL)isBeingPresented