可能重复:
什么是NSNotification?
什么是NSNotification中心?为什么用它?(iPhone SDK)
Dar*_*ust 11
它是以通用方式实现观察者模式的工具.您的对象可以说:"如果其他对象发布通知,我希望收到通知,以便我可以执行某些操作." 另一个对象可以说,"发生了一些有趣的事情,所以我发布这个通知让别人知道." .
在Java等其他API中,您明确注册为管理器对象的观察者.NSNotificationCenter使这不必要(尽管您仍然可以用这种方式实现模式).
主要思想是脱钩.这意味着对象应该尽可能少地了解彼此.NSNotificationCenter是一个非常有价值的工具.在我真正知道如何使用它之前,我的类有很多委托,有时甚至是协议和注册方法,因此观察者可以自己注册.很难做对.NSNotificationCenter可以解除您的负担.
一个具体的例子:假设你有一个想知道应用何时终止的对象.app委托有一个在这种情况下被调用的方法applicationWillTerminate:.您现在可以修改委托,以便您的对象可以向委托注册,并实现该applicationWillTerminate:方法,以便已注册的对象具有一个名为的方法.
或者你这样做:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(aMethodOnMyObject)
name:NSApplicationWillTerminateNotification
object:nil];
Run Code Online (Sandbox Code Playgroud)
然后,您甚至不需要触摸您的应用程序代理.
更酷的是使用块addObserverForName:object:queue:usingBlock:.
只是为了让您免于崩溃:如果您将对象注册为观察者,请务必removeObserver:在您的dealloc方法中调用NSNotificationCenter的方法.
我建议你也阅读NSNotificationCenter类引用中的描述,它也解释了如何使用它.学会使用它,试验它,我打赌你会发现它有时会节省很多代码.