https://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html
在上面的链接,我看到关于以下模型层应该如何与视图控制器进行通信。
“当一个模型对象的变化(例如,新的数据被通过网络连接接收到的),它会通知控制器对象,这将更新适当的查看对象。”
我的问题是,如何在模型对象通知控制器对象? 什么是可以做到这一点不同的方式? 我的模型层获取用户的位置,然后调用Web服务。 我应该如何通知控制器对象时数据下载?
谢谢
有几种方法可以做到这一点,根据您的具体情况。 通常你会使用协议/委托执行,关键值观测,或通知。 有一个很好的概述这里 。
编辑:
以为我要补充,因为这个答案的评论提到:利用回调块也是一个非常坚实的选项,根据您的需要。 有很多可能的决定性因素是什么解决方案是最适合什么样的情况,但这里是一个概要我跟随。
如果你保证只需要一次一个观察者:我一般用块或代表。 我个人的偏好是,我使用的块如果只有一个或两个回调,因为这是他们大放异彩,但我用的委托协议,如果有以上几个可能的方法。
如果您可能需要多个观察者,我通过使用通知NSNotificationCenter
。
我用键 - 值观察时,我只需要在一个实例观察特定的属性,而不是事件。