¿Alguien ha implementado Futures en Objective-C? Yo (con suerte no ingenuamente) supongo que debería ser razonablemente simple para envolver NSInvocations en una buena API?¿Futuros para Objective-C?
Respuesta
Mike Ash ha implementado el uso de bloques de Futuros:
documentación de Apple en blocks in Grand Central Dispatch puede ser de interés.
el enlace está roto. –
MPWFoundation ha futuros basado en Higher Order Messaging:
Asumiendo que tiene un cálculo regular con un mensaje computeResult
:
result = [someObject computeResult];
anteponiendo ese mensaje con el mensaje future
calculará el resultado en el fondo:
result = [[someObject future] computeResult];
El objeto en result
es un proxy que se bloqueará cuando se le envíen mensajes hasta que se reciba el valor.
PromiseKit parece bastante popular. Está mi biblioteca Collapsing Futures. También hay RXPromise. Y mucho más.
Algunas notas entre los tres:
- PromiseKit tiene soporte Swift
- Cada puede instalarse por CocoaPods.
- Cada uno aplana automáticamente los valores doblemente futuros en valores individuales futuros.
- Cada uno es seguro para subprocesos.
- RXPromise y PromiseKit actúan como Promises/A + de JavaScript.
- Difieren en cómo se controlan los futuros. En el colapso de futuros hay un FutureSource, que tiene un futuro en lugar de un futuro. En RXPromise y PromiseKit, un futuro es su propia fuente.
- Difieren en cómo se cancelan los futuros. En RXPromise, el consumidor llama al
cancel
en el futuro. En el colapso de futuros, el productor cancels a token dio el método que hizo el futuro. No sé lo que hace PromiseKit. - Todos tienen una excelente documentación sobre cada método.
Soy tendencioso hacia el colapso de futuros, ya que lo escribí y así que claramente prefiero las decisiones de diseño que tomó. Creo que mantener el control por separado es muy importante porque ayuda a prevenir ciclos de referencia autosostenibles (no es un problema en JS, pero definitivamente es un problema en Obj-C cuando se trabaja con bloques). También creo que cancelar tokens simplemente facilita las cosas. Por otro lado, actuar como una especificación bien conocida de un lenguaje conocido sería realmente agradable.
_Cancellation_ es una característica sumamente importante de una implementación futura, aunque la "especificación Promises/A +" no lo sugiere en su API principal. "Collapsing Futures" tiene un medio bien diseñado para lograr la cancelación, así como RXPromise, simplemente no es tan "explícito": el envío de 'cancelar' a una promesa primero significa que el remitente abandona su interés en el futuro. Si esta es la promesa original, la tarea subyacente * puede * reenviar este evento de cancelación simplemente registrando un controlador y luego cancelarlo. También significa que una tarea se cancelará cuando ya no haya más consumidores. – CouchDeveloper
- 1. `DummyExecutor` para 'futuros' de Python
- 2. jQuery Función On para elementos futuros?
- 3. Futuros en Haskell
- 4. DAL futuros de prueba
- 5. entendiendo Clojure futuros
- 6. ¿Qué son los futuros?
- 7. Bloques ObjectiveC equivalente en Java
- 8. objectivec: fb publicar comentario error
- 9. ObjectiveC Parse Integer from String
- 10. Diferencia entre NSLog y sentencia printf para ObjectiveC
- 11. ¿Cómo tomar tarjetas de crédito en línea para pagos futuros?
- 12. copia de retorno de Java para ocultar cambios futuros
- 13. Obtener una matriz de futuros NSDates
- 14. enviar una notificación desde javascript en UIWebView a ObjectiveC
- 15. ¿Puedo colocar un ObjectiveC @selector en un NSDictionary?
- 16. Pros y contras del uso de excepción en IOS/ObjectiveC
- 17. ¿Cómo implementar un puente sin cargo en ObjectiveC/C?
- 18. ObjectiveC: ¿dónde declarar las propiedades de instancias privadas?
- 19. Uso de librerías estáticas C/C++ desde iPhone Aplicaciones ObjectiveC
- 20. Cómo dividir la nueva línea de NSString en ObjectiveC
- 21. ¿Uso práctico de futuros? Es decir, ¿cómo matarlos?
- 22. ¿Por qué mis futuros scala no son más eficientes?
- 23. ObjectiveC que pasa alrededor ... nula terminado listas de argumentos
- 24. obteniendo el error "invalid_client" en la muestra gdata-objectivec-client
- 25. Ayuda con código GCC y ObjectiveC y Cygwin
- 26. Posible error en Scala 2.10: los futuros no se ejecutan
- 27. C++ 11 thread_pool, futuros, soporte de promesas en gcc
- 28. ObjectiveC Sintaxis para especificar el nombre del protocolo en el argumento del método
- 29. ¿Cuál es la mejor API para combinar C + 11 asincrónico/futuros con IO asíncrono de Windows?
- 30. ¿Es esta prueba HTML para futuros asistentes de posgrado demasiado difícil?
http: // mobisoftinfotech.com // tutoriales/essential-swift/essential-swift-for-objective-c-programmers.html –