它们各自的优缺点是什么?
我应该在哪里专门使用它们?
Answers:
考虑性能是一个好主意(对于较少数量的通知对象,更好的委派;对于较大数量的对象,通知中心更好的;或者运行探查器),但是我认为这是一个更重要的因素,因为您在谈论Objective-C和不太可能谈论可能用C语言编写的代码库中真正高性能的部分,这减少了模块之间的编译时依赖性。
没有什么可以阻止您拥有一组委托而不是一个委托。
我可能只将NSNotificationCenter用于我制作的任何网络堆栈组件的状态以及任何自定义设备状态监视接口。但是,对于大多数耦合而言,与应用程序的全局状态无关,我认为在大多数情况下,在Objective-C中使用常规接口协定更容易,并且比使用NSNotificationCenter更容易为后继的人提供帮助。实际上,我从未将NotificationCenter用于自己的自定义事件,而是更喜欢使用委托来简化其他人阅读我的代码的代码理解。
最后,当然,在通知标准API或从标准API发出通知的情况下,您别无选择,必须使用Apple禁止给定事件的两种方法中的任何一种。
DidFireMissle
),而如果您需要返回信息(例如),则需要委托-(BOOL)shouldFireMissle
。