代码之家  ›  专栏  ›  技术社区  ›  Frank Shearar

目标C的未来?

  •  16
  • Frank Shearar  · 技术社区  · 15 年前

    有人实施过 Futures 在目标C中?我(希望不是天真的)假设在一个好的api中包装nsinvocations应该相当简单?

    4 回复  |  直到 9 年前
        2
  •  8
  •   Craig Gidney Mihai    9 年前

    PromiseKit 似乎很受欢迎。这是我的 Collapsing Futures 图书馆。还有 RXPromise . 还有更多。

    三者之间的一些注释:

    • 承诺书得到迅速的支持
    • 每个都可以通过椰子荚来安装。
    • 每一个都会自动将两个未来值展平为单独的未来值。
    • 每个都是线程安全的。
    • rxpromise和promisekit的行为类似于javascript中的promises/a+。
    • 他们对未来的控制方式不同。在崩溃的未来中有一个未来之源,它有未来而不是现在的未来。在rxpromise和promisekit中,未来是自己的源泉。
    • 他们在未来如何被取消上有分歧。在rxpromise中,用户呼叫 cancel 关于未来本身。在崩溃的未来中,生产者 cancels a token 它赋予了创造未来的方法。我不知道PromiseKit是做什么的。
    • 每个方法都有很好的文档。

    我倾向于崩溃的未来,因为我写了它,所以显然更喜欢它的设计决策。我认为保持控制分离非常重要,因为它有助于防止自持的引用循环(在js中不是问题,但在obj-c中使用块时绝对是问题)。我也认为取消代币只会让事情变得简单。另一方面,表现得像一个著名语言的著名规范将是非常好的。

        3
  •  3
  •   mpw    12 年前

    MPWFoundation 有基于 Higher Order Messaging :

    假设您有一个带有消息的常规计算 computeResult :

    result = [someObject computeResult];
    

    在该消息前面加上 future 消息将在后台计算结果:

    result = [[someObject future] computeResult];
    

    中的对象 result 是一个代理,在向其发送消息时将阻止该代理,直到收到值为止。

        4
  •  1
  •   alecail    12 年前

    苹果的文档 blocks in Grand Central Dispatch 可能很有趣。