我使用的addObserver如下:
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(notificationReceived:) name:nil object: nil];一切都运行得很好,但我认为当我不再需要观察者时,移除它可能是一种很好的形式……我发现我需要使用这一行:
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"observerName" object:nil];问题是,当我更改addObserver行以包含名称,以便removeObserver知道要删除哪个观察者时,将不再调用通知。将运行以下代码行,但在添加名称时将其忽略:
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(notificationReceived:) name:@"observerName" object: nil];我可以将名称重新设置为nil,它将再次工作。有人知道我哪里做错了吗?
谢谢!
发布于 2013-03-19 23:52:51
我想你可能把参数的含义搞错了。
name:告诉系统要通知您哪些通知。
self是实际的观察者,所以当您removeOberserver:self时,您将停止接收任何通知。
您应该再次仔细阅读文档,了解它们的含义:
有关示例,请参见How to create a class to send and receive events through NSNotificationCenter in Objective-C?
https://stackoverflow.com/questions/15504022
复制相似问题