addObserver:name

时间:2013-03-19 15:44:53

标签: iphone ios xcode nsnotificationcenter addobserver

我正在使用像这样的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,然后再次运行。 有谁知道我在这里做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:4)

我认为你可能会误认为参数意味着什么。

name:告诉系统您想要通知哪些通知。

self是实际观察者,因此当您removeOberserver:self时,您将停止接收任何通知。

您应该仔细阅读文档,了解具体含义:

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/Reference/Reference.html#//apple_ref/doc/uid/20000219-SW1

有关示例,请参阅How to create a class to send and receive events through NSNotificationCenter in Objective-C?