iOS 6アプリには、デフォルトの通知センターでオブザーバーとして追加されるいくつかのビューコントローラーがあります。viewDidLoad
これらは、コントローラーが最上位にない場合でも通知を受信するようにするため、メソッドに追加されます。
多くの人が、dealloc
メソッドでオブザーバーを削除することを推奨しています。NSLog()
ただし、オブザーバーを追加および削除するときに両方でメッセージをログに記録しており、dealloc
呼び出されないようです(ARCを使用しています)。
考えられることとは反対に、このviewDidUnload
メソッドはオプションではありません。iOS5ではメモリ不足の状態でのみ呼び出され、iOS6ではまったく呼び出されないためです。
実際には、ドキュメントに必要なことを行う方法はないようです。ちなみに、これまでのところ、コントローラーが複数回追加され、(明らかに)削除されていないにもかかわらず、私のアプリケーションはクラッシュしていません。
注:これまでのところ、私はシミュレーターのみでテストしてきました。dealloc
シミュレーターではなく、実際のデバイスで呼び出される可能性はありますか?NSLog()
または、単に表示されないという呼び出しです(ただし、他のすべての場所に表示されます)。