0

J'ai une classe Sync qui synchronise les données au serveur en arrière-plan.Synchronisation d'arrière-plan dans iOS

L'utilisation de l'objet de classe Sync est telle que le View Controller à partir duquel je fais une demande de synchronisation sur l'objet de classe Sync peut être désalloué avant la fin de la synchronisation.

Le problème auquel je suis confronté ici est que l'objet de classe Sync se désaffecte également et que la requête de synchronisation n'est jamais complète.

Je pensais faire de la classe Sync un singleton, mais ce serait plus de l'abus du motif singleton.

Comment dois-je procéder?

Répondre

0

Vous pouvez garder le pointeur fort à l'objet avant de commencer:

__block StubClass *strongSelf = self; 
méthode

Et commencer là-dessus:

[strongSelf dataSync: ^... { //completionBlock 
    strongSelf = nil; 
}]; 

Ou avec sémaphores:

__block StubClass *strongSelf = self; 
dispatch_semaphore_t sem = dispatch_semaphore_create(0); 
[strongSelf dataSync: ^... { 
    dispatch_semaphore_signal(sem); 
}]; 
dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER); 
strongSelf = nil;