Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.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
Objective-C中的中介模式:用于执行计算等的控制器对象。_Objective C_Ios_Oop_Design Patterns - Fatal编程技术网

Objective-C中的中介模式:用于执行计算等的控制器对象。

Objective-C中的中介模式:用于执行计算等的控制器对象。,objective-c,ios,oop,design-patterns,Objective C,Ios,Oop,Design Patterns,我的应用程序执行一些关于公司估值的相当复杂的计算。 它从多个来源获取原始数据(例如,存储为csv数据的web服务的股价和存储为xml数据的基础数据) 获取数据后,应用程序解析数据,将其存储在核心数据中并执行计算。计算结果也存储在岩心数据中 我目前的方法是将计算作为类别添加到Company(managed)对象中,并将csv和xml数据的解析作为类别添加到数据对象中(图中未显示)。与网络相关的代码位于单独的singleton对象中(如《iOS编程:大书呆子牧场指南》第3版中所建议的) 问题: 由于

我的应用程序执行一些关于公司估值的相当复杂的计算。 它从多个来源获取原始数据(例如,存储为csv数据的web服务的股价和存储为xml数据的基础数据)

获取数据后,应用程序解析数据,将其存储在核心数据中并执行计算。计算结果也存储在岩心数据中

我目前的方法是将计算作为类别添加到Company(managed)对象中,并将csv和xml数据的解析作为类别添加到数据对象中(图中未显示)。与网络相关的代码位于单独的singleton对象中(如《iOS编程:大书呆子牧场指南》第3版中所建议的)

问题:

由于网络通信和计算是相互依赖的(即,某些计算只能在收到特定数据包后开始),并且我希望使用多线程,因此我在view controller中得到了大量代码

我认为我应该按照中介模式的思想使用协调器对象,并将视图控制器从与协调相关的代码中解放出来

你对此有何看法

  • 中介模式(协调对象)是正确的方法吗 你认为呢
  • 您建议如何设置协调员 反对
  • 在网上或网上有关于这个主题的好教程或示例吗 在书中

谢谢大家!

iOS为此提供了两项伟大的技术—NSO操作和大中央调度。对于您所描述的操作,我更喜欢使用操作,因为在操作之间创建连接非常容易,这样,在其他操作完成之前,某些操作不会启动。NSOperation队列与操作系统协同工作,以便为设备和当前资源管理线程数和一般负载

github上有一个开源项目“NSOperation WebFetches MadeEasy”,它有一个中介对象,您可以在主类(在本例中是viewController,但可以是任何类)中实例化该对象,您可以通过它运行所有操作,它会在主线程上将消息发送回类中的一个方法。您可以在15分钟内开始这项工作-您需要的类是OperationsRunner,它告诉您如何将其添加到.h文件中。您可以将其用于web抓取(并发操作)和非并发操作。现在甚至可以进行块操作


阅读苹果的

中有关NSO操作和块的内容,感谢您在GCD上提醒我。我已经重新编码我的应用程序的一部分,以使用GCD,它似乎现在工作良好。我没有找到你提到的开源项目,你有URL吗?好笑-谷歌没有找到它-URL->