2010-04-15 5 views
0

Je fais mon téléchargement avec un objet hérité de NSOperation. J'ai lu la documentation et quand mon opération a fini, je dois appeler la méthodeProblème NSOperation et UIKit

[self.delegate performSelectorOnMainThread:@selector(operationDidFinish:) withObject:self waitUntilDone:YES]; 

. Il doit être appelé sur le thread principal, car le UIKit n'est pas thread-safe et la documentation le dit dans ces cas de frameworks non thread threads. Dans la méthode déléguée, je dessine un pdf ou une image, mais comme il est dessiné sur le fil principal, l'interface utilisateur est très décalée jusqu'à la fin du dessin. Peut-être pouvez-vous me suggérer un bon moyen d'éviter ce problème?

Répondre

1

Je suppose que vous téléchargez des données d'image, que vous les décodez et que vous restituez l'image. Le dernier bit, render, doit arriver sur le thread principal. Pouvez-vous déplacer la partie décoder vers votre fil de téléchargement? Par exemple, utilisez les appels CGImage pour décoder un fichier png ou jpeg, vous devez donc utiliser un fichier CGImageRef avant d'appeler operationDidFinish. Si vous pouvez travailler avec le PDF en tant qu'images, il vaudrait mieux le convertir que le décoder dans le fil principal.

+0

Ok, je vais essayer. –