2010-05-04 5 views
0

Chaque exemple que je trouve sur Internet (y compris doc Apple) fixe l'objectif à l'auto comme ceci:NSThread exécutant une classe

[NSThread detachNewThreadSelector:@selector(threadedTask) toTarget:self withObject:nil]; 

Depuis que je voudrais faire une tâche plus complexe en arrière-plan (impliquant plusieurs méthodes), je pensais que la création d'une classe Task appelé comme ceci:

Task *task = [[Task alloc] init]; 
[NSThread detachNewThreadSelector:@selector(main) toTarget:task withObject:nil]; 

mais je me demande, comment traitera les variables d'instance de ma classe Task? Dans ma méthode main puis-je appeler en toute sécurité les méthodes de ma classe en utilisant [self myMethod] et en modifiant les variables membres en supposant que je suis le seul thread à y accéder?

Cette façon de traiter les sujets pour chaque Task semble bizarre pour moi, désolé si ma question est stupide ^^

Merci à l'avance

Répondre

1

S'il n'y a qu'un NSThread (y compris le fil principal) alors oui, tu peux faire ce que tu veux. Dès que plus d'un thread peut accéder simultanément à certaines données, vous devez fournir une synchronisation.

+0

merci! Donc je vais essayer ça tout de suite, alors je vais accepter votre réponse (puisque stackoverflow me force à attendre pour accepter quand même ^^) –