J'ai une application que j'ai créée pour l'iPhone 4 lorsqu'il a été lancé. Maintenant, cette application ne fonctionne pas sur l'iPhone 4S.
J'ai identifié la section coupable comme étant une pièce GCD. La voici :
dispatch_group_t my_group = dispatch_group_create();
dispatch_queue_t queue1 =
dispatch_queue_create("Queue 1", NULL);
dispatch_queue_t queue2 =
dispatch_queue_create("Queue 2", NULL);
dispatch_group_async(my_group, queue1, ^{
[self doStuff1];
});
dispatch_group_async(my_group, queue2, ^{
[self doStuff2];
});
dispatch_group_notify(my_group, dispatch_get_main_queue(), ^{
// this is block 3, this is to be executed after both queues end processing
// this is never executed on iPhone 4S, but is executed on iPhone4
// no error message, but execution never starts inside this block
});
L'idée est la suivante : deux files d'attente sont créées ainsi qu'un groupe. Je lance des tâches pour les deux files d'attente, de manière asynchrone, en utilisant le groupe. Lorsque les deux sont terminées, le groupe lance un autre bloc de tâches.
Cela fonctionne à merveille sur l'iPhone 4, mais le bloc final 3 n'est jamais atteint.
Une raison pour cela ? Des indices ?
Merci.