Existe-t-il un moyen d'appeler un bloc avec un paramètre primitif après un délai, comme en utilisant performSelector:withObject:afterDelay:mais avec un argument comme int/ double/
Grand Central Dispatch (GCD) fournit un mécanisme simple et robuste pour les opérations simultanées et asynchrones, principalement dans les systèmes d'exploitation Apple (par exemple, iOS, macOS, watchOS et tvOS), mais aussi FreeBSD et MidnightBSD.
Existe-t-il un moyen d'appeler un bloc avec un paramètre primitif après un délai, comme en utilisant performSelector:withObject:afterDelay:mais avec un argument comme int/ double/
Je suis passé par l' iBook d'Apple et trouvé aucune définition de celui-ci: Quelqu'un peut-il expliquer la structure de dispatch_after? dispatch_after(<#when: dispatch_time_t#>, <#queue: dispatch_queue_t?#>, <#block:
J'apprends la programmation simultanée pour iOS. Jusqu'à présent, j'ai lu sur NSOperation/NSOperationQueue et GCD. Quelles sont les raisons d'utiliser NSOperationQueueOver GCDet vice versa? Sonne comme les deux GCDet NSOperationQueuerésume la création explicite NSThreadsde l'utilisateur. Cependant,...
Dans Swift 2, j'ai pu utiliser dispatch_afterpour retarder une action à l'aide de 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 }) Mais...
Dans Swift 2, j'ai pu créer une file d'attente avec le code suivant: let concurrentQueue = dispatch_queue_create("com.swift3.imageQueue", DISPATCH_QUEUE_CONCURRENT) Mais cela ne se compile pas dans Swift 3. Quelle est la meilleure façon d'écrire ceci dans Swift
Si vous pouvez cibler iOS 4.0 ou supérieur À l'aide de GCD, est-ce le meilleur moyen de créer un singleton en Objective-C (thread safe)? + (instancetype)sharedInstance { static dispatch_once_t once; static id sharedInstance; dispatch_once(&once, ^{ sharedInstance = [[self alloc] init]; });...
J'ai un rappel qui peut provenir de n'importe quel fil. Lorsque je reçois ce rappel, je voudrais effectuer une certaine tâche sur le thread principal. Dois-je vérifier si je suis déjà sur le fil principal - ou y a-t-il une pénalité en n'effectuant pas cette vérification avant d'appeler le code...
J'ai beaucoup de code dans les projets Swift 2.x (ou même 1.x) qui ressemble à ceci: // 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...
Dans mon application, j'ai une fonction qui crée une NSRURLSession et envoie une NSURLRequest en utilisant sesh.dataTaskWithRequest(req, completionHandler: {(data, response, error) Dans le bloc d'achèvement de cette tâche, je dois faire un calcul qui ajoute une UIImage au viewcontroller appelant....
Lors de l'utilisation de GCD, nous voulons attendre que deux blocs asynchrones soient exécutés et terminés avant de passer aux étapes d'exécution suivantes. Quelle est la meilleure façon de le faire? Nous avons essayé ce qui suit, mais cela ne semble pas fonctionner:
Je teste du code qui effectue un traitement asynchrone à l'aide de Grand Central Dispatch. Le code de test ressemble à ceci: [object runSomeLongOperationAndDo:^{ STAssert… }]; Les tests doivent attendre la fin de l'opération. Ma solution actuelle ressemble à ceci: __block BOOL finished = NO;...
Je voudrais qu'une boucle for in envoie un tas de requêtes réseau à Firebase, puis transmette les données à un nouveau contrôleur de vue une fois que la méthode a terminé son exécution. Voici mon code: var datesArray = [String: AnyObject]() for key in locationsArray { let ref = Firebase(url:...
J'utilise avec succès, une grande répartition centrale dans mes applications, mais je me demandais quel est le véritable avantage d'utiliser quelque chose comme ceci: dispatch_async(dispatch_get_main_queue(), ^{ ... do stuff ou même dispatch_sync(dispatch_get_main_queue(), ^{ ... do stuff Je veux...
J'ai créé une file d'attente série comme celle-ci: dispatch_queue_t _serialQueue = dispatch_queue_create("com.example.name", DISPATCH_QUEUE_SERIAL); Quelle est la différence entre dispatch_asyncappelé comme ça dispatch_async(_serialQueue, ^{ /* TASK 1 */ }); dispatch_async(_serialQueue, ^{ /* TASK...
J'ai du mal à comprendre pleinement les files d'attente simultanées et série dans GCD. J'ai quelques problèmes et j'espère que quelqu'un pourra me répondre clairement et précisément. Je lis que des files d'attente en série sont créées et utilisées pour exécuter les tâches les unes après les autres....
J'ai une méthode qui accepte un bloc et un bloc de complétion. Le premier bloc doit s'exécuter en arrière-plan, tandis que le bloc d'achèvement doit s'exécuter dans la file d'attente où la méthode a été appelée. Pour ce dernier, j'ai toujours utilisé dispatch_get_current_queue(), mais il semble...
Comment puis-je faire attendre mon code jusqu'à la fin de la tâche dans DispatchQueue? A-t-il besoin de CompletionHandler ou de quelque chose? 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...
Je lis la documentation d'Apple sur la "Gestion de la mémoire pour les files d'attente d'envoi": Même si vous implémentez une application garbage collection, vous devez toujours conserver et libérer vos files d'attente de répartition et autres objets de répartition. Grand Central Dispatch ne prend...