2010-06-22 5 views
0

J'ai eu un tas de fuites signalées par des instruments lorsque j'ai utilisé mon application dans le simulateur à l'aide d'instruments. Les fuites rapportées n'avaient pas beaucoup de sens pour moi, donc je voulais essayer sur l'appareil. Mais quand je suis parti des instruments c'était soit ne répondait pas (il ne réagissait pas aux touches, je pouvais seulement appuyer sur la touche pour quitter) ou ne commençait même pas juste un écran noir était visible sur l'iphone. Sans instruments, mon application fonctionne bien. Est-ce que quelqu'un sait ce qui ne va pas?Le programme ne fonctionnait pas à partir d'instruments

UPDATE1:
J'ai un UISearchBar dans l'application attachée à un uiSearchDisplayController si je clique dessus, le programme se fige. Je peux seulement le fermer. Il est supposé montrer une table de saisie semi-automatique quand on clique dessus. Si je cours à partir du simulateur, il perd de la mémoire quand je clique sur la barre de recherche, mais seulement pour la première fois, et c'est à partir d'une allocation nsurlconnection qui est libérée, à la fois dans les méthodes delegateDidFinishLoading. (J'ai déjà une question sans réponse séparée sur ce problème.)

UPDATE2: D'autres fuites ont été signalées mais le seul code de mon programme est l'appel à UIApplicationMain(argc, argv, nil, nil);, ce qui n'est pas très utile pour le dépister.

Répondre

1

Il n'y a pas de fuite qui n'apparaît que dans le simulateur. S'il fuit dans le simulateur, il fuira sur l'appareil, fin de la discussion.

Vous verrez occasionnellement des plantages avec l'un des outils d'analyse causés par les crochets insérés par l'outil interagissant avec les parties problématiques de votre code. Très probablement ce que vous éprouvez est une boucle d'emballement quelconque.

Je suggère de résoudre les problèmes sur le simulateur avant de s'attaquer à l'appareil.

+0

Est-il donc impossible d'utiliser des instruments sur l'iphone jusqu'à ce que j'ai résolu toutes les fuites sur le simulateur? Il n'y a pas de crash ocasional, il ne fonctionne jamais lors de l'utilisation d'instruments et d'iphone, il ne fonctionne que lorsque vous utilisez des instruments et un simulateur. –

+0

Qu'est-ce qu'une boucle d'emballement? –

+0

Crashing Instruments est inhabituel mais cela arrive. Normalement, vous n'avez pas besoin de réparer le simulateur. Cependant, il est généralement plus facile de le faire. Le simulateur a plus de mémoire et il est facile d'obtenir les crochets. Si quelque chose ne fonctionne pas dans le simulateur, il ne fonctionnera pas sur l'appareil alors pourquoi s'embêter? Une boucle d'emballement résulte de références automatiques provoquant des récursions infinies, c'est-à-dire un objet, un graphe d'objet, une méthode, une fonction, etc., qui s'appelle souvent des dizaines de milliers de fois en une seconde. Les instruments doivent également produire des milliers de crochets pour les suivre et les verrouiller. – TechZen

Questions connexes