Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS模型层通知控制器对象_Ios_Xcode_Model View Controller - Fatal编程技术网

iOS模型层通知控制器对象

iOS模型层通知控制器对象,ios,xcode,model-view-controller,Ios,Xcode,Model View Controller,在上面的链接中,我看到了关于模型层应如何与ViewController通信的以下内容 当模型对象发生更改(例如,通过网络连接接收到新数据)时,它会通知控制器对象,控制器对象会更新相应的视图对象 我的问题是,模型对象是如何通知控制器对象的?有哪些方法可以做到这一点?我的模型层获取用户的位置,然后调用web服务。下载数据时,我应该如何通知控制器对象 谢谢根据您的具体情况,有几种方法可以做到这一点。通常,您将使用协议/委托实现、键值观察或通知。这里有一个很好的概述 编辑: 我想我应该补充一点,正如对这

在上面的链接中,我看到了关于模型层应如何与ViewController通信的以下内容

当模型对象发生更改(例如,通过网络连接接收到新数据)时,它会通知控制器对象,控制器对象会更新相应的视图对象

我的问题是,模型对象是如何通知控制器对象的?有哪些方法可以做到这一点?我的模型层获取用户的位置,然后调用web服务。下载数据时,我应该如何通知控制器对象


谢谢

根据您的具体情况,有几种方法可以做到这一点。通常,您将使用协议/委托实现、键值观察或通知。这里有一个很好的概述

编辑:

我想我应该补充一点,正如对这个答案的评论所提到的:根据您的需要,使用回调块也是一个非常可靠的选择。关于什么样的解决方案最适合于什么样的情况,有很多可能的决定因素,但这里有一个我遵循的概要

如果保证一次只需要一个观察者:我通常使用块或委托。我个人的偏好是,如果只有一个或两个回调,我就使用块,因为这是它们最重要的地方,但是如果有超过几个可能的方法,我就使用委托协议

如果您可能需要多个观察者,我将通过
NSNotificationCenter
使用通知

当我只需要观察实例上的特定属性而不是事件时,我使用键值观察