Ответ 1
Майк Эш использовал фьючерсы, используя блоки:
Кто-нибудь реализовал Фьючерсы в Objective-C? Я (надеюсь, не наивно) полагаю, что должно быть достаточно просто обернуть NSInvocations в хороший API?
Майк Эш использовал фьючерсы, используя блоки:
PromiseKit кажется довольно популярным. Там моя библиотека Collapsing Futures. Там также RXPromise. И еще много.
Некоторые примечания между этими тремя:
cancel
для самого будущего. В сворачивающихся фьючерсах производитель отменяет токен, который он дал методу, который сделал будущее. Я не знаю, что делает PromiseKit.Я склонен к свертыванию фьючерсов, поскольку я написал это и так четко предпочитаю проектные решения, которые он принял. Я считаю, что контроль над контролем является очень важным, поскольку он помогает предотвратить самоподдерживающиеся эталонные циклы (не проблема в JS, но определенно проблема в Obj-C при работе с блоками). Я также думаю, что отменять токены просто упростить. С другой стороны, действовать как хорошо известная спецификация с известного языка было бы очень приятно.
MPWFoundation имеет фьючерсы на основе Сообщения более высокого порядка:
Предполагая, что у вас есть регулярное вычисление с сообщением computeResult
:
result = [someObject computeResult];
префиксное сообщение с сообщением future
будет вычислять результат в фоновом режиме:
result = [[someObject future] computeResult];
Объект в result
является прокси-сервером, который будет блокироваться при отправке сообщений до получения значения.
Документация Apple на блоки в Grand Central Dispatch может представлять интерес.