Articles of grand central dispatch

Charger des données volumineuses à partir de plusieurs tables en parallèle à l'aide du multithreading

J'essaye de charger des données de 10K loggings de 6 tables différentes de ma database Ultrlite. J'ai créé différentes fonctions pour 6 tables différentes. J'ai essayé de les charger en parallèle en utilisant NSInvokeOperations, NSOperations, GCD, Subclassing NSOperation mais rien ne fonctionne. En fait, charger 10K de 1 table prend 4 sec, et d'un autre […]

Sérialisation de requests NSURLConnection (iOS) – Utiliser une request synchrone?

Je parcourt une list de dates et envoie une requête à un server Web pour chaque date de la list. Je voudrais que chaque date soit traitée complètement avant que la request suivante ne soit envoyée au server. Pour ce faire, j'ai mis en place une queue de répartition en série en utilisant GCD. Chaque […]

Comment créer du fil pour vérifier le time?

Je dois mettre un time pour vérifier datatables de mise à jour du server 2 fois par jour, supposons 9h et 21h, mais je ne sais pas comment le faire. Créer un fil, exécuter chaque fois et vérifier l'heure actuelle avec le réglage, si elles sont égales, alors faire la tâche? Cette façon est bonne? […]

Téléchargement de la grande image dans le fil d'arrière-plan.

Je dois download un service Web Image To. Ci-dessous l'extrait de code que je dois returnner pour download une image. La taille de l'image est très grande (environ 6Mb). Je télécharge cette image dans le fil d'arrière-plan en utilisant GCD. if([VSCore ConnectedToInternet ]) { bgTask = [[UIApplication sharedApplication]beginBackgroundTaskWithExpirationHandler: ^{ dispatch_async(dispatch_get_main_queue(), ^{ //[application endBackgroundTask:self->bgTask]; //self->bgTask = […]

dispatch_semaphore_signal n'est jamais exécuté en raison de l'attente

J'essaie de prendre deux photos et je veux qu'elles fonctionnent dans l'ordre. La méthode de capture des images est effectuée à l'aide d'une méthode qui s'exécute de manière asynchronous. J'utilise actuellement des sémaphores pour essayer de synchroniser cela, mais cela empêche le programme de fonctionner. Je crois que c'est parce que le completionHandler est exécuté […]

Est-il possible de rendre dispatch_queue_t vide?

Je ne trouve aucune information à ce sujet. J'ai un dispatch_queue_t dans mon application où j'ai mis quelques tâches à faire. Mais ces tâches prennent du time et il arrive que parfois ils ne devraient plus être appelés, donc je voudrais nettoyer la queue. C'est possible?

Mettre à jour la propriété en utilisant Geocoder pour get l'adresse réelle de l'user, EXC_BAD_ACCESS

Im relativement un nouveau développeur iOS, et im traitant avec le gestionnaire de complétion de géocodeur , je ne comprends pas comment mettre à jour une variable avec l'adresse trouvée par le géocodeur et le faire quelques trucs avec elle. En quelques mots, je veux que le bloc geocoder finisse d'utiliser l'info dans une certaine […]

Est-ce que dispatch_after bloque le thread principal?

Je suis en train de régler une timer pour qu'après une seconde passe, je réinitialise une valeur pour mon extension de keyboard. Le problème est que j'ai l'printing que l'appel suivant bloque mon interface user: dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ [self resetDoubleTapBool]; }) Y a-t-il une façon asynchronous de le faire, ou une meilleure […]

Pourquoi les tests de réseau asynchronous sont-ils difficiles dans Objective-C / Swift?

Donc, j'apprends plus sur la façon de tester le code asynchronous quand je rencontre ce qui suit: Dès qu'une méthode de test donnée est terminée, les methods XCTest considèrent qu'un test est terminé et passent au test suivant. Cela signifie que tout code asynchronous du test précédent continuera à s'exécuter pendant le prochain test. Le […]

Comment éviter les blocs nesteds

GCD et les blocs sont si gentils et pratiques. Mais quand j'en suis tombé amoureux, j'ai découvert que quelque chose de mal est arrivé. Regardez ces codes ci-dessous: [self functionA:^(BOOL success) { if (success) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) { [self functionB:^(NSError *error) { if (error != nil) { dispatch_async(dispatch_get_main_queue(), ^(void) { [self functionC:^(id result) { […]