我一直在研究 NSNotificationCenter
,我一直想知道您什么时候会使用自己的自定义通知中心而不是 defaultCenter
?这样做的好处是什么?
请原谅我的无知,但似乎仅使用 defaultCenter
就可以很愉快地相处,但我想确保我没有错过一些重要的东西。
最佳答案
Apple 文档含糊不清,它只是指出程序员通常不需要创建新文档:
Each running Cocoa program has a default notification center. You typically don’t create your own. An NSNotificationCenter object can deliver notifications only within a single program.
完整来源:NSNotificationCenter documentation .
但是,每个通知中心都可以处理按名称和对象区分的通知网络。当您添加观察者时,您通常会以如下方式调用该方法:
[center addObserver: self selector: @selector(observe:) name: @"observe" object: someObject];
当您发布通知时,您可以指定对象:
[center postNotificationName: @"observe" object: someObject];
这样说你使用N个名字和M个对象,你可以处理N*M个区分通知。我认为没有必要使用两个通知中心。理论上,如果您完成了所有名称,您可以使用 alloc+init 创建另一个名称,但我几乎看不出它实际上如何变得方便。
还要考虑到,当有两个对象不拥有指向彼此的直接指针时,通常会使用通知中心(否则为什么不简单地调用它的方法?),因为可以避免复杂的绑定(bind)(特别是当您使用很多 xib 文件),因此拥有一个独特的通知中心对象非常方便。
如果您使用通过allot+init获得的通知中心,那么您必须确保所有通信对象都有指向该通知中心的指针,这会增加一些复杂性。所有通知中心的电量都会被浪费。
关于cocoa - 何时创建自定义 NSNotificationCenter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17047416/