我有一个相当复杂的 iphone 应用程序,它发生了许多异步进程。为了解决这个问题,我大量使用了 NSNotification Center。我的问题是注册通知的“最佳实践”是什么起来。我想在主视图的 viewDidLoad 中有一个“registerNotifications”方法,它显然可以一次性注册所有通知。这听起来合理吗?如果不是,那么处理这个问题的首选方法是什么。提前感谢您的帮助!!
问问题
1048 次
2 回答
4
将所有通知放在一个对象中会破坏封装,这很糟糕。您使一个对象通知操作依赖于另一个对象正常工作。追踪这一切实际上将是一场噩梦。它也倒退到通知的全部目的,即创建一个去中心化和模块化的消息传递系统。
通知不应“散布在整个代码中”,而应仅由接收它们的对象管理。如果您使用大量通知,您可能需要创建一个具有处理多个通知的专用方法的类,然后让您的其他类从该类继承。这样您就可以进行自动管理。
人们在使用通知时犯的一大错误是他们在真正需要注册数据模型时注册控制器。例如,假设您正在从 URL 下载一些数据,并且您希望在界面进行时和/或结束时更新界面。如果您的 UI 中有多个视图并且您注册了控制器,那么每个视图都必须管理一个通知(其中可能有多个。)但是,如果您设置共享数据模型来接收通知,您只需要一个最多两个通知。将转到数据模型,以便数据模型可以自行更新,然后您可以让数据模型发出通用通知,让任何侦听视图从数据模型更新自己。
使您的视图控制器依赖于数据模型在所有情况下都大大简化了设计。
于 2010-02-13T22:38:49.490 回答
0
一个对象应该将自己注册为它感兴趣的通知的观察者。这样做的最佳时间是当对象变得感兴趣时,否则当你不想要通知时你必须处理它们。
于 2010-02-13T14:29:35.770 回答