2010-05-12 2 views
0

Je reçois l'erreur suivante:Comment interpréter les erreurs Objective-C?

2010-05-11 17:46:28.475 MyApp[54112:5e1b] bool _WebTryThreadLock(bool), 0x140faa0: Tried to obtain the web lock from a thread other than the main thread or the web thread. This may be a result of calling to UIKit from a secondary thread. Crashing now...

Est-il possible pour moi de savoir où [54112: 5e1b] est dans mon code, donc je peux essayer de réduire l'erreur?

Merci.

Répondre

0

Vous pouvez réduire l'erreur simplement en vous assurant que vous ne faites rien pour UIKit objets dans un thread secondaire, c'est ce que le message d'erreur semble vous accuser. Les threads d'arrière-plan sont pour les tâches d'arrière-plan - vous pouvez faire tout ce que vous voulez mais quand votre thread d'arrière-plan doit avoir un effet sur votre vue (comme dans model, view, controller) vous devez faire quelque chose pour communiquer avec votre thread principal faire le changement - comme performSelectorOnMainThread.

Mais Mac OS X Debugging Magic est un document très populaire et utile qui pourrait aider à trouver exactement ce qui est à cette adresse.

+0

Je vais jeter un coup d'oeil. Une question connexe au sujet de ne "rien faire aux objets UIKit" dans un fil secondaire. Un appel comme "[UIApplication sharedApplication] .networkActivityIndicatorAvailable = YES" est-il autorisé? Je me demande à quel point c'est restrictif. Merci. –

+0

C'est vraiment restrictif - vous ne pouvez pas supposer quoi que ce soit dans UIKit fonctionnera si vous le faites à partir d'un thread secondaire. Vous devez ajouter une méthode qui définit networkActivityIndicatorAvailable mais qui est appelée sur le thread principal à l'aide de performSelectorOnMainThread. –

+0

C'est assez difficile, n'est-ce pas? Je veux dire, je sais que "[UIApplication sharedApplication] .networkActivityIndicatorAvailable" dessine à l'écran. Mais rien sur son nom ne l'indique. Il ne semble pas possible de se conformer à 100% à cette restriction, sauf si vous ne faites pas d'appels Coca-Coca sans le faire dans le thread principal. Ce qui serait absurde. –

Questions connexes