是否有人在Objective-C中实施了Futures?我(希望不是天真地)假设将NSInvocations包装在一个漂亮的API中应该相当简单吗?
答案 0 :(得分:15)
Mike Ash使用Blocks实现了Futures:
答案 1 :(得分:8)
PromiseKit 似乎很受欢迎。有我的 Collapsing Futures 库。还有 RXPromise 。还有更多。
这三者之间的一些注释:
cancel
。在崩溃期货中,生产者cancels a token给了创造未来的方法。我不知道PromiseKit做了什么。我偏向于贬低期货,因为我写了它,因此显然更喜欢它所做的设计决策。我认为保持控制分离是非常重要的,因为它有助于防止自我维持的参考周期(在JS中不是问题,但在使用块时绝对是Obj-C中的问题)。我也认为取消令牌只会让事情变得更容易。另一方面,像一个众所周知的语言的知名规范表现得非常好。
答案 2 :(得分:3)
MPWFoundation的期货基于Higher Order Messaging:
假设您使用消息computeResult
进行定期计算:
result = [someObject computeResult];
使用future
消息为该消息添加前缀将在后台计算结果:
result = [[someObject future] computeResult];
result
中的对象是一个代理,它会在收到消息之前阻止消息发送给它。
答案 3 :(得分:1)
关于blocks in Grand Central Dispatch的Apple文档可能很有用。