以下は、ビューによって名前が追加されたすべてのNSNotificationCenter.defaultCenterを削除しますか?
NSNotificationCenter.defaultCenter().removeObserver(self)
ViewDidLoad()の同じビューに以下がある場合、それらは上記の1行で削除されますか?
NSNotificationCenter.defaultCenter().addObserver(self, selector: "method1", name: UITextFieldTextDidChangeNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "method2", name: UITextViewTextDidChangeNotification, object: nil)
はい。removeObserver(self)
呼び出しは、指定した通知名、オブジェクト、またはセレクターに関係なく、_addObserver:selector:name:object:
_を使用して追加したオブザーバーを、オブザーバーselfとともに削除します。
一部のシステムクラス(またはユーザーが定義するオブジェクトのサブクラス)が、知らないオブザーバーを追加している可能性があるため、removeObserver(self)
メソッドをオブジェクトのdeinitメソッド以外の場所で使用することはお勧めできません。そのメソッド呼び出しは「焦土」呼び出しであり、オブジェクトからすべてのオブザーバーを削除します。
代わりに、_removeObserver:name:object:
_を呼び出して、追加したオブザーバーのみを削除する必要があります。
受信者のディスパッチテーブルから、特定のオブザーバーを指定するすべてのエントリを削除します。 https://developer.Apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/index.html#//Apple_ref/occ/instm/NSNotificationCenter/removeObserver :
したがって、パラメーターで指定されたものとすべて同じである場合にのみ、すべてのオブザーバーが削除されると思います。