我的应用程序包含一个后端服务器,其中包含许多必须在后台执行的事务。其中许多事务需要运行许多同步代码。
例如,执行查询,使用结果执行另一个查询,创建新的后端对象,然后将对新对象的引用返回到前台中的视图控制器对象,以便可以更新UI。
更具体的情况是按顺序执行一系列AJAX调用,类似于this question,但在iOS中。
这一系列任务实际上是一项统一的工作。我没有在iOS中找到允许我将此序列干净地编码为“工作单元”的现有工具。同样地,我没有看到为异步任务序列中可用的“工作单元”提供一致上下文的方法。
答案 0 :(得分:2)
我最近不得不做一些JavaScript,并且必须学会使用JS中常见的Promise概念。我意识到我可以将这个想法改编为iOS和Objective-C。结果是Github上的here。有文档,代码和单元测试。
Promise应该被认为是将来将结果对象(id)或错误对象(NSError)返回到块的承诺。创建Promise对象以表示异步结果。异步代码将结果传递给Promise,然后传递Promise计划并运行一个块来处理结果或错误。
如果您熟悉JS上的Promises,您将立即识别iOS版本。如果没有,请查看自述文件和参考文献。
答案 1 :(得分:2)
我已经使用了大多数常见的嫌疑人,我不得不说,对我来说,Grand Central Dispatch是要走的路。
Apple显然非常关心它重写大量的库代码以使用完成块。
IIRC,Apple也表示GCD是多任务处理的首选实现。我还记得以前的一些选项已经使用GCD重新实现了,所以你还没有附加其他东西,Go GCD!
顺便说一句,我曾经发现编写块签名真的很痛苦,但是如果你只是在选择占位符时点击返回,它会为你完成所有这些。什么可能比那更甜。