Ce serait bien si vous pouviez clarifier la question, car il est difficile de comprendre exactement ce que vous voulez faire et quel est le problème. En général, le code d'interface utilisateur doit toujours s'exécuter dans le thread principal. Cela est clairement indiqué dans la documentation Cocoa, et vous ne réussirez pas à avoir plusieurs threads essayant de contrôler l'interface utilisateur.
Si vous souhaitez exécuter du code dans d'autres threads et que ceux-ci influencent l'interface utilisateur, vous devez implémenter des mécanismes pour communiquer les informations au thread principal. Une méthode qui est très pratique est
de NSObject
performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;
Si vous voulez utiliser les notifications, vous devez les envoyer sur le thread principal aussi. Il est facile d'obtenir des bugs confus si vous ne respectez pas ce principe (bien que les choses semblent fonctionner au début).