iOS模型层通知控制器对象

6

https://developer.apple.com/library/archive/documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html

在上面的链接中,关于模型层如何与ViewController通信,我看到以下内容:
“当模型对象发生更改(例如,通过网络连接接收到新数据),它会通知控制器对象,该对象会更新适当的视图对象。” 我的问题是,模型对象如何通知控制器对象? 有哪些不同的方法可以实现这一点?我的模型层获取用户位置然后调用Web服务。当下载完成数据时,应该如何通知控制器对象?
1个回答

5
根据您的具体情况,有几种方法可以实现此操作。通常会使用协议/代理实现、键值观察或通知。这里有一个非常好的概述:链接
编辑:正如对这个答案的评论所提到的那样,使用回调块也是一个非常可靠的选择,这取决于您的需求。有很多可能影响决定哪种解决方案最适合哪种情况,但这是我遵循的一般概述。
如果您保证一次只需要一个观察者:我通常使用块或代理。如果只有一个或两个回调,我的个人偏好是使用块,因为它们在这方面表现出色,但如果有多个可能的方法,则使用代理协议。
如果您可能需要多个观察者,则使用NSNotificationCenter进行通知。
当我仅需要观察实例上的特定属性而不是事件时,我使用键值观察。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接