0

通知のオブザーバーとしてView Controllerを追加したい。

セレクター メソッドが呼び出されると、ユーザーに警告します。このView ControllerがトップView Controllerの場合にのみ、このアラートが表示されるようにします。

メソッドにオブザーバーとして追加することを考えましたviewDidLoad。しかし、オブザーバーとしてビューコントローラーを削除する方が良いのはどこですか?

と の両方を削除すると問題になる可能性がviewDidUnloadありdeallocますか?

4

1 に答える 1

2

いいえ。ドキュメントによると:

特定のオブザーバーを指定するすべてのエントリをレシーバーのディスパッチテーブルから削除します。

そのようなエントリがない場合、削除するものは何もないので、問題はありません。

ただし、これをどのように使用しているかによっては、viewDidLoadにオブザーバーとして追加しても、そのビューコントローラーが「トッ​​プビューコントローラー」である場合にのみ使用されるわけではありません(たとえば、複数のタブがあり、移動する場合)。メモリ警告が表示されない限り、他の(非表示の)タブのビューは、それらから離れてもアンロードされません)。

目標によっては、viewDidAppearにオブザーバーを追加する方がよい場合があります(その場合は、viewWillDisappearで削除します)。

于 2011-04-03T19:20:35.933 に答える