Domande taggate «grand-central-dispatch»

Grand Central Dispatch (GCD) fornisce un meccanismo semplice e robusto per operazioni simultanee e asincrone, principalmente nei sistemi operativi Apple (ad esempio, iOS, macOS, watchOS e tvOS), ma anche FreeBSD e MidnightBSD.


24
dispatch_after - GCD in Swift?
Ho esaminato l' iBook di Apple e non sono riuscito a trovarne alcuna definizione: Qualcuno può spiegare la struttura di dispatch_after? dispatch_after(<#when: dispatch_time_t#>, <#queue: dispatch_queue_t?#>, <#block: dispatch_block_t?#>)


13
Come scrivo dispatch_after GCD in Swift 3, 4 e 5?
In Swift 2, sono stato in grado di utilizzare dispatch_afterper ritardare un'azione utilizzando la spedizione Grand Central: 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 }) Ma questo non sembra più compilarsi da Swift 3. Qual è il modo preferito di scrivere questo …



4
GCD per eseguire attività nel thread principale
Ho un callback che potrebbe provenire da qualsiasi thread. Quando ricevo questo callback, vorrei eseguire una determinata attività sul thread principale. Devo verificare se sono già sul thread principale - o c'è qualche penalità non eseguendo questo controllo prima di chiamare il codice qui sotto? dispatch_async(dispatch_get_main_queue(), ^{ // do work …

6
Come posso dispatch_sync, dispatch_async, dispatch_after, ecc. In Swift 3, Swift 4 e oltre?
Ho un sacco di codice nei progetti Swift 2.x (o anche 1.x) che assomiglia a questo: // 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 to update the UI dispatch_async(dispatch_get_main_queue()) { self.imageView.image = …

9
In Swift come chiamare il metodo con i parametri sul thread principale GCD?
Nella mia app ho una funzione che crea una NSRURLSession e invia una NSURLRequest utilizzando sesh.dataTaskWithRequest(req, completionHandler: {(data, response, error) Nel blocco di completamento per questa attività, devo eseguire alcuni calcoli che aggiungono un UIImage al viewcontroller chiamante. Ho una funzione chiamata func displayQRCode(receiveAddr, withAmountInBTC:amountBTC) che esegue il calcolo dell'aggiunta …

10
Attendere che vengano eseguiti due blocchi asincroni prima di iniziare un altro blocco
Quando si utilizza GCD, vogliamo attendere che vengano eseguiti e eseguiti due blocchi asincroni prima di passare alle fasi successive dell'esecuzione. Qual è il modo migliore per farlo? Abbiamo provato quanto segue, ma non sembra funzionare: dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ { // block1 }); dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ { // block2 }); …

13
Come posso attendere il completamento di un blocco inviato in modo asincrono?
Sto testando del codice che esegue l'elaborazione asincrona utilizzando Grand Central Dispatch. Il codice di test è simile al seguente: [object runSomeLongOperationAndDo:^{ STAssert… }]; I test devono attendere il completamento dell'operazione. La mia soluzione attuale si presenta così: __block BOOL finished = NO; [object runSomeLongOperationAndDo:^{ STAssert… finished = YES; }]; …



3
Differenza tra dispatch_async e dispatch_sync sulla coda seriale?
Ho creato una coda seriale come questa: dispatch_queue_t _serialQueue = dispatch_queue_create("com.example.name", DISPATCH_QUEUE_SERIAL); Qual è la differenza tra dispatch_asyncchiamato in questo modo dispatch_async(_serialQueue, ^{ /* TASK 1 */ }); dispatch_async(_serialQueue, ^{ /* TASK 2 */ }); E dispatch_syncchiamato così in questa coda seriale? dispatch_sync(_serialQueue, ^{ /* TASK 1 */ }); dispatch_sync(_serialQueue, …

6
Code simultanee e seriali in GCD
Sto lottando per comprendere appieno le code simultanee e seriali in GCD. Ho alcuni problemi e spero che qualcuno possa rispondermi chiaramente e sul punto. Sto leggendo che le code seriali vengono create e utilizzate per eseguire le attività una dopo l'altra. Tuttavia, cosa succede se: Creo una coda seriale …

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.