有没有人在Objective-C中实现了Futures?我(希望不是天真地)认为将NSInvocations包装在一个不错的API中应该是相当简单的?Objective-C的期货?
回答
MPWFoundation了基于Higher Order Messaging期货:
假设你有一个消息computeResult
定期计算:
result = [someObject computeResult];
前缀来future
消息消息会计算在后台结果:
result = [[someObject future] computeResult];
result
中的对象是一个代理,它将阻止消息发送给它直到接收到该值。
PromiseKit似乎很受欢迎。有我的Collapsing Futures库。还有RXPromise。还有更多。
这三个之间的一些注意事项:
- PromiseKit有斯威夫特支持
- 每个人都可以通过的CocoaPods安装。
- 每个自动将双重未来值变为单独未来值。
- 每个都是线程安全的。
- RXPromise和PromiseKit的行为类似于JavaScript中的Promises/A +。
- 他们在如何控制期货方面有所不同。在未来的崩溃期中,有一个FutureSource,它有一个未来,而不是未来。在RXPromise和PromiseKit中,未来是它自己的来源。
- 它们在取消未来的方式上有所不同。在RXPromise消费者呼吁
cancel
未来本身。在崩溃的期货中,生产商cancels a token给出了创造未来的方法。我不知道PromiseKit做了什么。 - 对于每种方法都有出色的文档。
因为我写了它,所以很明显地喜欢它所做的设计决定,所以我偏向于崩溃的期货。我认为保持控制独立非常重要,因为它有助于防止自我维持的参考周期(在JS中不是问题,但在处理块时肯定是Obj-C中的问题)。我也认为取消令牌可以简化事情。另一方面,像一个着名语言的知名规范那样行事将会非常好。
_Cancellation_是Future实现的一个非常重要的特性,即使“Promises/A + Spec”没有在其核心API中提示它。 “崩溃的期货”有一个设计良好的完成取消的方法,以及RXPromise,它不仅仅是“明确的”:先发送“取消”给承诺,即发件人放弃对未来的兴趣。如果这是根本的承诺,那么潜在的任务*可以*通过简单地注册处理程序然后取消自己来转发此取消事件。还有意味着当没有更多的消费者时,任务将被取消。 – CouchDeveloper 2014-05-11 05:10:59
- 1. Haskell的期货
- 2. 延期交货的日期
- 3. 失败的期货
- 4. 测序期货
- 5. 太多期货
- 6. 等待期货
- 7. 与期货
- 8. 期货Clojure中
- 9. 创建期货
- 10. 从期货ASYNCIO
- 11. 减少期货
- 12. 当预期设置ObjectiveC类属性时?
- 13. 在objectiveC中比较两个日期?
- 14. ObjectiveC中的MulticastDelegate
- 15. 中的ObjectiveC
- 16. 在的ObjectiveC
- 17. 在的ObjectiveC
- 18. 在的ObjectiveC
- 19. 在的ObjectiveC
- 20. 400错误的请求时更新交货期或交货期
- 21. Satchmo:指定订单的交货日期/发货日期
- 22. 创作期货及期权
- 23. NumberFormatter - ObjectiveC
- 24. Akka期货指导
- 25. NHibernate期货与CreateMultiCriteria
- 26. 了解Clojure期货
- 27. 期货与承诺
- 28. 阶,发挥期货:
- 29. NHibernate的 - 与期货取
- 30. Erlang的期货和承诺
http:// mobisoftinfotech。com // tutorials/essential-swift/essential-swift-for-objective-c-programmers.html – 2016-01-25 08:49:06