0

我的应用程序包含一个后端服务器,其中包含许多必须在后台执行的事务。其中许多事务需要许多同步的代码位才能运行。

例如,做一个查询,使用结果做另一个查询,创建一个新的后端对象,然后将新对象的引用返回给前台的视图控制器对象,以便更新 UI。

一个更具体的场景是按顺序执行一系列 AJAX 调用,类似于这个问题,但在 iOS 中。

这一系列任务实际上是一个统一的工作。我没有在 iOS 中找到允许我将此序列干净地编码为“工作单元”的现有设施。同样,我没有看到为异步任务序列中可用的“工作单元”提供一致上下文的方法。

4

2 回答 2

2

我已经使用了大多数常见的嫌疑人,我不得不说,对我来说,Grand Central Dispatch 是要走的路。

Apple 显然很在意它重写了很多库代码以使用完成块。

IIRC,Apple 也表示 GCD 是多任务处理的首选实现。

我还记得之前的一些选项已经在底层使用 GCD 重新实现,所以你还没有附加到其他东西,Go GCD!

顺便说一句,我曾经发现编写块签名真的很痛苦,但是如果您在选择占位符时点击返回,它会为您完成所有这些。还有什么比这更甜蜜的。

于 2013-04-26T00:43:21.613 回答
2

我最近不得不做一些 JavaScript,并且不得不学习使用 JS 中常见的 Promise 概念。我意识到我可以将这个想法应用到 iOS 和 Objective-C 中。结果Github 上。有文档、代码和单元测试。

Promise 应该被认为是在未来将结果对象(id)或错误对象(NSError)返回到块的承诺。创建一个 Promise 对象来表示异步结果。异步代码将结果传递给 Promise,然后 Promise 调度并运行一个块来处理结果或错误。

如果你熟悉 JS 上的 Promises,你会立刻认出 iOS 版本。如果没有,请查看自述文件和参考资料。

于 2013-04-26T00:09:32.013 回答