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

问题描述:

我想知道对通知中心发出的通知做出回应的最佳方式是什么。在视图控制器或子视图中处理通知

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

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

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

  1. 视图控制器成为观察员,并告诉更新基于该通知名称的特定视图。 [subviewx pleaseUpdate];

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

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

有没有建议的方式来做到这一点?例如,负责的视图控制器是否应处理所有通知,或者是否适合作为观察者,并且有点独立。

感谢您的意见!

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

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

在视图控制器中发出通知的另一个好处是,您可能希望在应用中的其他位置重复使用您的视图,并且当视图开始响应他们不打算的通知时,您不希望发生不良副作用受到。整理视图控制器中的所有通知也将使处理起来更容易 - 不要忘记,当您完成视图时,您需要删除通知观察者,并且将所有的陈述集中在一个地方,分布在多个班级。