J'ai mon délégué d'application principal qui contient une méthode qui retourne un objet. Ce délégué d'application s'exécute sur le thread principal. J'ai également une NSOperation qui s'exécute sur un thread différent. En plus de vouloir parfois appeler ma méthode de délégué d'application sur mon thread principal, je dois également l'appeler depuis mon thread NSOperation pour obtenir l'objet qu'il retourne. Ma première question est, si j'appelle cela de mon autre fils ...Question multi-thread dans Objective-C 2.0
id newObject = [[[UIApplication sharedApplication] delegate] myMethod];
... cette méthode sera traiter sur le même fil que le NSOperation, ou ce que ce sera le même fil (principal) que le délégué de l'application est activé?
Je veux également m'assurer que le code dans myMethod
est seulement appelé une fois à la fois par mon fil d'opération ou mon fil principal. Puis-je simplement créer une instance NSLock var dans mon délégué d'application et faire quelque chose comme:
-(id)myMethod {
[myLock lock];
myObject = // Get or create my object to return
[myLock unlock];
return myObject;
}
Merci pour votre aide!
Mike
Merci pour votre réponse utile :-) –
Serait-il vrai de dire qu'un bloc @synchronized (auto) {} ferait la même chose que une instance NSLock? –
Plus ou moins; les détails de mise en œuvre sont légèrement différents, mais l'impact est le même. – bbum