我有一个viewcontroller。其中有一个nsnotification观察者。我发布了来自另一个viewcontroller的通知。但是nsnotification观察者选择器被触发两次或有时三次。我的问题是,当我使用[view removeFromSuperview]; 要删除此viewcontrollers视图,是否已删除通知观察者?我在viewcontroller类的
的dealloc方法中给出了这个方法- (void)dealloc {
[super dealloc];
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
答案 0 :(得分:2)
没有
当viewcontrollers保持计数变为0时,将调用该方法
您应该添加另一个方法,当从另一个viewcontroller中删除视图并调用
时将调用该方法[[NSNotificationCenter defaultCenter] removeObserver:self];
对于多次调用选择器的问题,我需要查看更多代码 - 确保发布通知的代码行不被多次调用
答案 1 :(得分:1)
NSNotification
注册到整个应用程序(甚至是所有操作系统),而不是单个视图或视图控制器。如果不再使用,则需要在操作中删除观察者。在这种情况下,您只能处理一个已发布的通知。