web-dev-qa-db-fra.com

Mon application se fige mais aucune erreur n'apparaît

Est-ce que tout le monde sait ce que je dois vérifier si mon application se fige? Je veux dire, je peux voir l'application sur l'écran de l'iPad mais aucun bouton ne répond. J'ai essayé de déboguer le code en cliquant sur le bouton, mais je n'ai encore rien vu. Je lisais sur les outils Instruments; comment puis-je les utiliser?

Quelqu'un peut-il m'aider? J'ai juste besoin d'une explication sur l'utilisation des outils.

28
Vanjo

On dirait que vous avez bloqué le fil principal d'une manière ou d'une autre. Pour déboguer, exécutez l'application dans le débogueur et lorsque l'application se fige, appuyez sur le bouton de pause situé au-dessus de la zone de journal au bas de Xcode. Ensuite, sur le côté gauche, vous pourrez voir exactement ce que fait chaque thread, et voir où il se coince.

 pause button

Probablement une longue boucle sur le thread principal ou un blocage de la synchronisation.

80
Ben Baron

En plus de la pause et du suivi de la pile, je pense qu’une autre chose à faire est de vérifier dans le code si une boucle quelconque bloque l’application. 

J'ai récemment rencontré un problème similaire, mais la trace de pile n'a pas beaucoup aidé, j'ai découvert que j'avais une boucle éternelle lorsque j'appelais une méthode reloadData() dans layoutsubviews et que cela provoquait un gel, sans erreur ni aide des instruments.

0
sheinix

La meilleure réponse est correcte. Vous pouvez déboguer ceci avec l'option "Pause". Le moyen le plus courant de bloquer le thread principal consiste à appeler dispatch_sync sur le même thread que celui que vous distribuez. Parfois, vous appelez le même code à partir de dispatch_once.

0
Timur Bernikovich