取消注册通知监听器的原因

时间:2021-11-10 20:31:04

    通知中心不会保留(retain)监听器对象, 在通知中心注册过的对象 ,必须在该对象释放前取消注册. 否则, 当相应的通知再次出现时, 通知中心仍然会向该监听器发送消息. 因为, 相应的监听器对象已经被释放了, 所以可能会导致应用崩溃 .

   通知中心提供了相应的方法来取消注册监听器

- ( void )removeObserver:(id)observer; 
- ( void )removeObserver:(id)observer name:(NSString *)aName object:(id)anObject;

一般在监听器销毁之前取消注册(如在监听器中加入下列代码) :
- ( void )dealloc {
   //[super dealloc];  非ARC中需要调用此句
     [[NSNotificationCenter defaultCenter] removeObserver:self];
}