有沒有人在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