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