处理视图控制器或子视图中的通知

时间:2012-02-19 16:02:18

标签: objective-c ios uiviewcontroller nsnotifications

我想知道响应通知中心发出的通知的最佳方式是什么。

这是一个例子: 我有一个模型从服务器接收更新。 每当收到新信息时,都会生成通知并通过NSNotificationCenter发布。

有一个包含大量(部分嵌套)子视图的视图控制器;根据收到的信息类型,我必须更新特定的子视图。

对我来说,目前有两种解决方案:

  1. 视图控制器成为观察者,并根据通知名称告知特定视图更新。 [subviewx pleaseUpdate];

  2. 每个视图都会注册一个观察者,具体取决于通知名称。

  3. 1的缺点是vc必须处理所有通知,尽管他并没有真正受到影响。

    有没有提议的方法呢?负责任的视图控制器是否应该处理所有通知,或者UILabel是否可以成为观察者并且有点独立。

    感谢您的意见!

1 个答案:

答案 0 :(得分:1)

一个有趣的问题 - 从技术上讲,两种方法都会产生相同的结果。

但是,我个人倾向于在视图控制器中保持通知处理,因为它更接近iOS中的模型 - 视图 - 控制器(MVC)模式。

在视图控制器中显示通知的另一个好处是,您可能希望在应用程序的其他位置重复使用您的视图,并且当视图开始响应它们不打算通知的通知时,您不希望发生不良副作用接收。在视图控制器中整理所有通知也会使处理它们变得更加容易 - 不要忘记在完成视图后需要删除通知观察者,并且在一个地方放置所有removeObserver个语句可以说比分散在多个班级要好得多。