0

我有一个视图控制器。里面有一个 nsnotification 观察者。我正在从另一个视图控制器发布通知。但是 nsnotification 观察者选择器会被触发两次或有时三次。我的问题是,当我使用 [view removeFromSuperview]; 要删除此视图控制器视图,通知观察者是否已删除?我在 viewcontroller 类的 dealloc 方法中给出了这个方法

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

}
4

2 回答 2

2

不。

当视图控制器保留计数变为 0 时将调用该方法

您应该添加另一个方法,当视图从另一个视图控制器中删除时将调用该方法并调用

[[NSNotificationCenter defaultCenter] removeObserver:self];

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

于 2011-11-25T18:47:09.540 回答
1

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

于 2011-11-25T18:43:49.323 回答