我的应用程序包括后端服务器,与必须在后台进行很多交易。 许多这些交易需要的代码运行许多同步位。
例如,做一个查询,使用该结果做另一个查询,创建一个新的后端对象,然后在前景返回到新对象的引用到一个视图控制器对象,使得UI能够被更新。
更具体的情况是开展以AJAX调用,相似的序列这一问题 ,但在iOS中。
这一系列任务确实是一个统一的作品。 我没有在iOS中,让我这个序列干净的代码为“工作单位”找到现有的设施。 同样,我没有看到一个方法来提供对“工作单位”,这将是跨越异步任务序列提供一致的环境。
最近,我不得不做一些JavaScript和必须学会使用承诺的概念,是常见的JS。 我意识到,我可以适应这个想法到iOS和Objective-C。 结果是这里 Github上。 有文档,代码和单元测试。
承诺应该被看作是一个承诺在未来某一时间的结果对象(ID)或一个错误对象(NSError)返回一个块。 创建一个无极对象来表示异步结果。 异步代码将结果传递给无极然后无极调度和运行一个块来处理的结果或错误。
如果你熟悉与JS的承诺,你会立刻意识到了iOS版本。 如果没有,请查看自述文件和参考。
我用最通常的嫌疑人,我不得不说,对我来说,大中央调度是要走的路。
苹果显然足够关心在乎它重新写了很多自己的库代码使用完毕块。
IIRC,苹果公司还表示,GCD是多任务的首选实现。
我还记得以前的一些选项已在引擎盖下使用GCD重新实现,所以你尚未连接到别的东西,围棋GCD!
顺便说一句,我用来寻找写块签名一个真正的痛苦,但选择了占位符的时候,如果你只是打回,它都为你。 有什么能比这更甜。
文章来源: How to cleanly encapsulate and execute in sequence a series of background tasks in iOS?