为什么 Apple 选择使用委托(delegate)来进行 SDK 对象之间的某些通信,并为其他对象将通知发布到通知中心?
特别是,我正在考虑来自 UIWindow 的一组键盘外观通知。
是否因为通知中心系统意味着多个对象可以使用键盘外观 Action 作为改变其状态的触发器,而只有一个对象能够与委托(delegate)实现一起操作?
最佳答案
委托(delegate)允许您“向后”执行方法(并可选择传递参数)。例如,如果您有一个类引用另一个类(父类和子类),子类可以在不引用父类的情况下返回父类。
另一方面,通知中心会监听并等待,直到听到它正在等待的消息。这允许多个 View Controller 中的多个监听器等待和监听给定消息。
至于关系,委托(delegate)是一对一的关系,而通知中心是一对一/多的关系。
关于ios - iOS SDK 中的通知中心与委派,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19215346/