1

addObserver/removeObserver が/ 、/viewDidDisappear NSNotificationdealloc` に配置されているのを見てきました....viewDidLoadviewDidUnloadviewDidAppear,

ここで物事をきちんと整頓するために使用する適切な方法は何ですか?

4

2 に答える 2

4

場合によります。ビューコントローラが画面に表示されているとき(その場合はviewWillAppear / Disappearがおそらく適切な選択です)、またはビューが現在アクティブでないときにのみ通知を受信しますか?後者の場合、initメソッドの方が適している可能性がありますviewDidLoad(または、ビューが現在メモリ内にあるという通知にとって重要ですか?)。

また、すべての場合に呼び出されるわけではないことに注意してくださいviewDidUnload(ビューがアンロードされたが、ビューコントローラがメモリに残っている場合のみ、ビューのロード中にビューコントローラの割り当てが解除された場合は、のみdeallocが呼び出され、登録を解除する正しい場所になります。

于 2012-06-08T12:16:36.137 に答える
4

viewController の場合:
inviewWillAppear:viewDidDisappear:. その理由は、ビューが「画面上」にある限り、これらの通知を気にするからです。viewDidLoadビューがオフスクリーンでviewDidUnloadあり、通知を登録 (削除) するのに不適切な場所である場合、ビューをアンロードする必要がないためです。

ビュー以外の通知を登録する場合:designated initializerおよび でdealloc

于 2012-06-08T12:13:03.043 に答える