我正在使用像这样的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,然后再次运行。 有谁知道我在这里做错了什么?
谢谢!
答案 0 :(得分:4)
我认为你可能会误认为参数意味着什么。
name:
告诉系统您想要通知哪些通知。
self
是实际观察者,因此当您removeOberserver:self
时,您将停止接收任何通知。
您应该仔细阅读文档,了解具体含义:
有关示例,请参阅How to create a class to send and receive events through NSNotificationCenter in Objective-C?