2011-11-25 27 views
0

我有一个viewcontroller。在它里面有一个nsnotification观察者。我从另一个viewcontroller发布通知。但nsnotification观察者选择器被触发两次或有时三次。我的问题是,当我使用[查看removeFromSuperview]; 删除此viewcontrollers视图,是通知观察员删除?我已经在视图控制器类nsnotificationcenter方法不止一次触发

- (void)dealloc { 
    [super dealloc]; 
    [[NSNotificationCenter defaultCenter] removeObserver:self]; 

} 

回答

2

,当viewcontrollers保留计数变为0

您应该添加另一种方法,当画面从其他视图 - 控制删除了将被调用,调用方法将被调用

[[NSNotificationCenter defaultCenter] removeObserver:self]; 

对于多次调用选择器的问题,我需要看到更多代码 - 确保发布通知的代码行不会被多次调用

+0

否仅后调用方法被调用一次。现在它可以有两种方法......视图控制器的两个实例在那里。或那个通知观察员以前没有删除正在发射... – sujith1406

+1

是真的 - 尝试记录自我,看看是否打印相同的地址 – DanZimm

+0

亚是这样的原因记录自我给同一类名称不同的地址 – sujith1406

1

NSNotification注册到整个应用程序(甚至所有操作系统),而不是单一的视图或视图控制器的dealloc方法给出此方法。如果它不再使用,你需要在你的动作中删除观察者。在这种情况下,您只能处理一个发布的通知。