Existe uma maneira de chamar um bloco com um parâmetro primitivo após um atraso, como usar, performSelector:withObject:afterDelay:mas com um argumento como int/ double/
Grand Central Dispatch (GCD) fornece um mecanismo simples e robusto para operações simultâneas e assíncronas, principalmente em sistemas operacionais Apple (por exemplo, iOS, macOS, watchOS e tvOS), mas também FreeBSD e MidnightBSD.
Existe uma maneira de chamar um bloco com um parâmetro primitivo após um atraso, como usar, performSelector:withObject:afterDelay:mas com um argumento como int/ double/
Examinei o iBook da Apple e não consegui encontrar nenhuma definição dele: Alguém pode explicar a estrutura de dispatch_after? dispatch_after(<#when: dispatch_time_t#>, <#queue: dispatch_queue_t?#>, <#block:
Estou aprendendo sobre programação simultânea para iOS. Até agora eu li sobre NSOperation/NSOperationQueue e GCD. Quais são as razões para usar NSOperationQueuerepetidamente GCDe vice-versa? Soa como ambos GCDe NSOperationQueueabstrai a criação explícita NSThreadsdo usuário. No entanto, a relação...
No Swift 2, pude dispatch_afteradiar uma ação usando o Grand Central Dispatch: 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 }) Mas isso não parece mais...
No Swift 2, consegui criar fila com o seguinte código: let concurrentQueue = dispatch_queue_create("com.swift3.imageQueue", DISPATCH_QUEUE_CONCURRENT) Mas isso não é compilado no Swift 3. Qual é a maneira preferida de escrever isso no Swift
Se você pode segmentar o iOS 4.0 ou superior Usando o GCD, é a melhor maneira de criar singleton no Objective-C (thread safe)? + (instancetype)sharedInstance { static dispatch_once_t once; static id sharedInstance; dispatch_once(&once, ^{ sharedInstance = [[self alloc] init]; }); return...
Eu tenho um retorno de chamada que pode vir de qualquer thread. Quando recebo esse retorno de chamada, gostaria de executar uma determinada tarefa no thread principal. Preciso verificar se já estou no segmento principal - ou há alguma penalidade por não executar essa verificação antes de chamar o...
Eu tenho muito código nos projetos Swift 2.x (ou até 1.x) que se parecem com isso: // 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...
Ao usar o GCD, queremos esperar até que dois blocos assíncronos sejam executados e concluídos antes de passar para as próximas etapas de execução. Qual o melhor jeito pra fazer isso? Tentamos o seguinte, mas parece não
No meu aplicativo, tenho uma função que cria uma NSRURLSession e envia uma NSURLRequest usando sesh.dataTaskWithRequest(req, completionHandler: {(data, response, error) No bloco de conclusão desta tarefa, preciso fazer alguns cálculos que adicionem uma UIImage ao viewcontroller de chamada. Eu...
Estou testando algum código que faz processamento assíncrono usando o Grand Central Dispatch. O código de teste fica assim: [object runSomeLongOperationAndDo:^{ STAssert… }]; Os testes precisam aguardar a conclusão da operação. Minha solução atual é assim: __block BOOL finished = NO; [object...
Gostaria que um loop for in enviasse várias solicitações de rede para o firebase e passasse os dados para um novo controlador de exibição assim que o método concluir a execução. Aqui está o meu código: var datesArray = [String: AnyObject]() for key in locationsArray { let ref = Firebase(url:...
Eu tenho usado com êxito o envio central grande em meus aplicativos, mas fiquei pensando qual é a real vantagem de usar algo como isto: dispatch_async(dispatch_get_main_queue(), ^{ ... do stuff ou mesmo dispatch_sync(dispatch_get_main_queue(), ^{ ... do stuff Quero dizer, nos dois casos, você...
Eu criei uma fila serial como esta: dispatch_queue_t _serialQueue = dispatch_queue_create("com.example.name", DISPATCH_QUEUE_SERIAL); Qual é a diferença entre dispatch_asyncchamado assim dispatch_async(_serialQueue, ^{ /* TASK 1 */ }); dispatch_async(_serialQueue, ^{ /* TASK 2 */ }); E...
Estou lutando para entender totalmente as filas simultâneas e seriais no GCD. Tenho alguns problemas e espero que alguém possa me responder com clareza e na hora. Estou lendo que filas seriais são criadas e usadas para executar tarefas uma após a outra. No entanto, o que acontece se: Eu crio...
Eu tenho um método que aceita um bloco e um bloco de conclusão. O primeiro bloco deve ser executado em segundo plano, enquanto o bloco de conclusão deve ser executado em qualquer fila em que o método foi chamado. Sempre usei este último dispatch_get_current_queue(), mas parece que está obsoleto no...
Como posso fazer meu código esperar até que a tarefa no DispatchQueue seja concluída? Ele precisa de algum CompletionHandler ou algo assim? func myFunction() { var a: Int? DispatchQueue.main.async { var b: Int = 3 a = b } // wait until the task finishes, then print print(a) // - this...
Estou lendo a documentação da apple sobre "Gerenciamento de memória para filas de despacho": Mesmo se você implementar um aplicativo com coleta de lixo, ainda deverá reter e liberar suas filas de despacho e outros objetos de despacho. O Grand Central Dispatch não oferece suporte ao modelo de...