¿Hay alguna manera de llamar a un bloque con un parámetro primitivo después de un retraso, como usar performSelector:withObject:afterDelay:pero con un argumento como int/ double/
Grand Central Dispatch (GCD) proporciona un mecanismo simple y robusto para operaciones concurrentes y asincrónicas, principalmente en sistemas operativos de Apple (por ejemplo, iOS, macOS, watchOS y tvOS), pero también FreeBSD y MidnightBSD.
¿Hay alguna manera de llamar a un bloque con un parámetro primitivo después de un retraso, como usar performSelector:withObject:afterDelay:pero con un argumento como int/ double/
Revisé el iBook de Apple y no pude encontrar ninguna definición: ¿Alguien puede explicar la estructura de dispatch_after? dispatch_after(<#when: dispatch_time_t#>, <#queue: dispatch_queue_t?#>, <#block:
Estoy aprendiendo sobre programación concurrente para iOS. Hasta ahora he leído sobre NSOperation/NSOperationQueue y GCD. ¿Cuáles son las razones para usar NSOperationQueueover GCDy viceversa? Suena como ambos GCDy NSOperationQueueabstrae la creación explícita NSThreadsdel usuario. Sin embargo, la...
En Swift 2, pude usar dispatch_afterpara retrasar una acción usando el despacho central magnífico: var dispatchTime: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, Int64(0.1 * Double(NSEC_PER_SEC))) dispatch_after(dispatchTime, dispatch_get_main_queue(), { // your function here }) Pero...
En Swift 2, pude crear una cola con el siguiente código: let concurrentQueue = dispatch_queue_create("com.swift3.imageQueue", DISPATCH_QUEUE_CONCURRENT) Pero esto no se compila en Swift 3. ¿Cuál es la forma preferida de escribir esto en Swift
Si puede apuntar a iOS 4.0 o superior Usando GCD, ¿es la mejor manera de crear singleton en Objective-C (hilo seguro)? + (instancetype)sharedInstance { static dispatch_once_t once; static id sharedInstance; dispatch_once(&once, ^{ sharedInstance = [[self alloc] init]; }); return...
Tengo una devolución de llamada que podría provenir de cualquier hilo. Cuando recibo esta devolución de llamada, me gustaría realizar una determinada tarea en el hilo principal. ¿Debo verificar si ya estoy en el hilo principal, o hay alguna penalización por no realizar esta verificación antes de...
Tengo un montón de código en proyectos Swift 2.x (o incluso 1.x) que se ve así: // Move to a background thread to do some long running work dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { let image = self.loadOrGenerateAnImage() // Bounce back to the main thread...
Cuando usamos GCD, queremos esperar hasta que se ejecuten y realicen dos bloques asíncronos antes de pasar a los siguientes pasos de ejecución. ¿Cuál es la mejor manera de hacer eso? Intentamos lo siguiente, pero no parece
En mi aplicación, tengo una función que hace una NSRURLSession y envía una NSURLRequest usando sesh.dataTaskWithRequest(req, completionHandler: {(data, response, error) En el bloque de finalización para esta tarea, necesito hacer algunos cálculos que agreguen un UIImage al controlador de vista de...
Estoy probando un código que realiza un procesamiento asincrónico utilizando Grand Central Dispatch. El código de prueba se ve así: [object runSomeLongOperationAndDo:^{ STAssert… }]; Las pruebas tienen que esperar a que termine la operación. Mi solución actual se ve así: __block BOOL finished...
Me gustaría un for in loop para enviar un montón de solicitudes de red a firebase, luego pasar los datos a un nuevo controlador de vista una vez que el método termine de ejecutarse. Aquí está mi código: var datesArray = [String: AnyObject]() for key in locationsArray { let ref = Firebase(url:...
He estado usando con éxito, gran distribución central en mis aplicaciones, pero me preguntaba cuál es la verdadera ventaja de usar algo como esto: dispatch_async(dispatch_get_main_queue(), ^{ ... do stuff o incluso dispatch_sync(dispatch_get_main_queue(), ^{ ... do stuff Quiero decir, en ambos...
He creado una cola en serie como esta: dispatch_queue_t _serialQueue = dispatch_queue_create("com.example.name", DISPATCH_QUEUE_SERIAL); ¿Cuál es la diferencia entre dispatch_asyncllamado así dispatch_async(_serialQueue, ^{ /* TASK 1 */ }); dispatch_async(_serialQueue, ^{ /* TASK 2 */ }); ¿Y...
Estoy luchando por comprender completamente las colas simultáneas y en serie en GCD. Tengo algunos problemas y espero que alguien pueda responderme claramente y en el punto. Estoy leyendo que las colas en serie se crean y utilizan para ejecutar tareas una tras otra. Sin embargo, ¿qué sucede...
Tengo un método que acepta un bloque y un bloque de finalización. El primer bloque debería ejecutarse en segundo plano, mientras que el bloque de finalización debería ejecutarse en cualquier cola a la que se haya llamado al método. Para este último siempre lo usé dispatch_get_current_queue(), pero...
¿Cómo puedo hacer que mi código espere hasta que finalice la tarea en DispatchQueue? ¿Necesita CompletionHandler o algo así? func myFunction() { var a: Int? DispatchQueue.main.async { var b: Int = 3 a = b } // wait until the task finishes, then print print(a) // - this will contain nil,...
Estoy leyendo la documentación de Apple sobre "Gestión de memoria para colas de despacho": Incluso si implementa una aplicación de recolección de basura, aún debe retener y liberar sus colas de envío y otros objetos de envío. Grand Central Dispatch no admite el modelo de recolección de basura...
¿Para qué sirve la nueva sintaxis dispatch_onceen Swift después de los cambios realizados en la versión de idioma 3? La versión anterior era la siguiente. var token: dispatch_once_t = 0 func test() { dispatch_once(&token) { } } Estos son los cambios realizados en libdispatch ....