¿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/
¿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/
Estoy tratando de encontrar un modelo singleton apropiado para usar en Swift. Hasta ahora, he podido obtener un modelo seguro sin subprocesos que funciona como: class var sharedInstance: TPScopeManager { get { struct Static { static var instance: TPScopeManager? = nil } if !Static.instance...
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...
Sé que Python no admite la sobrecarga de métodos, pero me he encontrado con un problema que parece que no puedo resolver de una manera agradable Pythonic. Estoy haciendo un juego donde un personaje necesita disparar una variedad de balas, pero ¿cómo escribo diferentes funciones para crear estas...
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...
Todavía soy algo nuevo en Objective-C y me pregunto cuál es la diferencia entre las siguientes dos declaraciones. [object performSelector:@selector(doSomething)]; [object
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,...