cocoa - 滥用 NSNotificationCenter

标签 cocoa nsnotificationcenter

NSNotificationCenter 真的很酷,我们可以用它构建非常可扩展的应用程序。我的问题是:我们是否可以在应用程序中滥用 NSNotificationCenter,即密集使用它,还是它不是一个好的选择? 目前,当我有 JSON 服务响应时,我正在使用它:我发布通知,因此我有几个监听器监听此类通知。到目前为止,我有近数十个服务需要调用,并且可以说根据这些通知要实现更多操作。 WDYT? 谢谢

最佳答案

根据我的经验,编写广泛使用 NSNotificationCenter 的应用程序会导致维护噩梦,需要引用使用数据的(委托(delegate))对象意味着您可以逐步完成处理数据的实际过程;有了通知,事情就变得太脱节了。

也就是说,在很多时候通知都是有意义的(设备旋转、应用程序启动/退出、广泛的状态变化),但我通常会尽可能避免它们。

我发现通知工作良好的一个地方是当我有一个 Controller 来管理许多其他 Controller 使用的数据时;当数据发生变化时,我会发出通知,这允许所有感兴趣的各方进行更新。例如,我可能有一个 UserController 来管理有关当前用户的信息(姓名、照片等)。当某些用户数据发生更改时,我将发布通知(例如 UserControllerDidUpdatePhotoNotification)。然后,任何感兴趣的 View Controller 都可以选择更新他们正在显示的照片。

我认为阻止我使用通知的最大原因是对可维护性的渴望,如果您使用通知仍然允许您拥有可维护的代码,那么就继续使用它们;如果没有,请改用其他设计。

关于cocoa - 滥用 NSNotificationCenter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8158115/

相关文章:

objective-c - ReactiveCocoa 捕捉所有错误——对集合对象的异步网络操作

ios - 关闭 ViewController 时如何在 Monotouch iOS 应用程序中删除观察者

ios - 如何找出 NSManagedObjectContextObjectsDidChange 关注的 MOC

ios - 为什么发布通知会导致崩溃?

swift - 如何使用 Swift 3 检测 macOS 默认模式和暗模式之间的切换

objective-c - 添加分发配置文件时 Mac 应用程序崩溃

cocoa - 是否有一种智能方法来处理 NSScrollView 中的 View 交换/重用?

objective-c - NSWindow +没有圆角的标题栏?

cocoa - 动画DidStop :finished: not called

ios - 为什么 Swift 中的 postNotification 在第二次调用时失败?