2011-06-01 2 views
5

J'utilise Sync Services dans mon application. J'utilise le moyen normal d'obtenir les contacts du carnet d'adresses (en utilisant les services de synchronisation).MACOSX - Lorsque j'appelle -finishSyncing sur un ISyncSessionDriver, l'application effectue des appels répétés au délégué

Je veux mettre fin prématurément à une session de synchronisation si l'utilisateur décide de le faire, par conséquent, lorsque l'utilisateur appuie sur le bouton « Annuler », je fais un appel à [driver finishSyncing]

Attaché au ISyncSessionDriver est un délégué qui traite les méthodes de délégué typiques d'une session de synchronisation. Le problème est que lorsque vous appelez finishSyncing, le sessionDriver:willFinishSessionAndReturnError: est appelé à plusieurs reprises, pas seulement une fois, mais des centaines de fois. Finalement, il va jeter une erreur. Alors, comment ai-je pu résoudre ce problème, ou quel meilleur débogage puis-je faire pour déterminer quel est le problème?

Merci

+0

Quelle erreur est retournée, éventuellement? – CristiC

Répondre

3

Utilisez plutôt - (void)cancelSyncing.

Assurez-vous de libérer le récepteur peu de temps après, car vous ne pouvez pas continuer à utiliser une session annulée.

+0

Le problème est que 'cancelSyncing' ne ferme pas immédiatement la session de synchronisation locale, ce qui est mon objectif en ce moment. – Andrei

+0

Je pensais que vous vouliez terminer immédiatement. Mais vous pouvez attendre jusqu'à ce qu'il se termine et afficher un message à l'utilisateur comme tel. – CristiC

+0

C'est vrai, et c'est ce que je fais en tant que solution temporaire en ce moment. Cependant, si l'utilisateur a des centaines de contacts dans son carnet d'adresses, la synchronisation locale prendra quelques minutes avant la fin ... pas vraiment facile à utiliser. J'espérais que quelqu'un d'autre a eu le même problème et savait comment le résoudre. – Andrei

Questions connexes