2010-10-30 38 views
0

Je suis d'appel doSaveItems: commeappelant une méthode qui modifie les propriétés de nib en utilisant detachNewThreadSelector

[NSThread detachNewThreadSelector:@selector(doSaveItems:) toTarget:self withObject:aObject]; 

doSaveItems: méthode a un code qui fait référence à l'un de mes points de vente:

[uiProgressLedIdle setHidden:YES]; 

bien sûr, je Je mets en place un pool autorelease à l'intérieur de cette méthode. Le problème est que [uiProgressLedIdle setHidden:YES]; n'a aucun effet sur mon interface graphique lorsque j'appelle cette méthode en utilisant detachNewThreadSelector: toTarget: withObject: Si je l'appelle [self doSaveItems: aObject] tout va bien et mon uiProgressLedIdle est masqué! Une suggestion de ce qui me manque? Merci!

Répondre

4

UIKit n'est pas thread-safe; faites toujours vos appels depuis le fil principal.

bien sûr, vous pouvez utiliser le multithreading dans iOS - mais vous poussez vos téléchargements et autres demandes de blocage vers des threads secondaires. lorsque le travail est terminé, utilisez performSelectorOnMainThread: pour notifier l'objet responsable de la mise à jour des objets ui. cet appel se produira lors de l'invocation suivante de la boucle d'exécution du thread principal.

+0

Merci! En effet cela fonctionne maintenant comme prévu! – Vassilis