我想知道响应通知中心发出的通知的最佳方式是什么。
这是一个例子:
我有一个模型从服务器接收更新。
每当收到新信息时,都会生成通知并通过NSNotificationCenter
发布。
有一个包含大量(部分嵌套)子视图的视图控制器;根据收到的信息类型,我必须更新特定的子视图。
对我来说,目前有两种解决方案:
视图控制器成为观察者,并根据通知名称告知特定视图更新。 [subviewx pleaseUpdate];
每个视图都会注册一个观察者,具体取决于通知名称。
1的缺点是vc必须处理所有通知,尽管他并没有真正受到影响。
有没有提议的方法呢?负责任的视图控制器是否应该处理所有通知,或者UILabel
是否可以成为观察者并且有点独立。
感谢您的意见!
答案 0 :(得分:1)
一个有趣的问题 - 从技术上讲,两种方法都会产生相同的结果。
但是,我个人倾向于在视图控制器中保持通知处理,因为它更接近iOS中的模型 - 视图 - 控制器(MVC)模式。
在视图控制器中显示通知的另一个好处是,您可能希望在应用程序的其他位置重复使用您的视图,并且当视图开始响应它们不打算通知的通知时,您不希望发生不良副作用接收。在视图控制器中整理所有通知也会使处理它们变得更加容易 - 不要忘记在完成视图后需要删除通知观察者,并且在一个地方放置所有removeObserver
个语句可以说比分散在多个班级要好得多。