にaddObserver:selector:name:object:
いviewDidLoad
ます。
そして、オブザーバーを削除するためremoveObserver:name:object:
に inを使用しています。viewWillDisappear:animated:
に間違ったパラメーターを渡してオブザーバーを削除できなかった場合はどうなりますremoveObserver:name:object:
か?
(たとえば、間違った通知をパラメーターに渡しname
たり、間違ったオブジェクトをobject
orに渡したりすると、オブザーバーは削除されませんObserver
)
を呼び出した後もオブザーバーがまだ nil でない場合、removeObserver:name:object:
notificationSelector が呼び出されるため、オブザーバーの削除に失敗したことがわかります。
しかし、 を呼び出した後にオブザーバーが nil になった場合、オブザーバーのremoveObserver:name:object:
削除に失敗したかどうかを確認できません。
オブザーバーが nil になると、オブザーバーは自動的に削除されますか?
それともnotification dispatch table
、のNSNotificationCenter
がどんどん大きくなり、最終的にアプリが遅くなりますか?
編集
オブザーバーに UIViewController オブジェクトのサブクラスを使用すると、ViewControllerdealloc
が呼び出された後にアプリがクラッシュしません。
しかし、他のクラスのオブジェクトを使用すると、オブジェクトが呼び出された後にアプリがクラッシュしますdealloc
。