2

J'ai développé mon application en utilisant mon périphérique 3G pour tester. En le donnant à un ami pour tester, il a remarqué qu'il se bloque ... J'ai jeté un coup d'oeil sur le journal de crash, mais ce n'est pas très utile sauf pour la déclaration "EXC_BAD_ACCESS" après quelques avertissements de mémoire.Aide au débogage de l'application iPhone - EXC_BAD_ACCESS

Sur mon appareil, je peux utiliser les lots imagePicker, et chaque fois qu'une photo est prise, je reçois un avertissement de mémoire, mais cela ne pose aucun problème.

Sur l'appareil de mon ami (également en 3G), après quelques images choisies sur l'appareil photo, l'application plante. Donc, ma question est .. Je pense quelque chose est désaffecté en raison de l'avertissement de la mémoire - mais seulement sur l'appareil de mon ami, puis après désallocation, il essaie d'être utilisé à nouveau. Comment puis-je savoir quel objet est appelé? Je ne peux pas utiliser NSZombies car il s'agit d'un périphérique (bêta) distant.

Aidez s'il vous plaît!

Aussi, si quelqu'un a des idées pourquoi mon appareil peut choisir l'image après image sans aucun problème et son ne peut pas ... ce serait plus utile

Merci!

EDIT: Nouvelle découverte .. J'obtiens aussi ce message d'erreur: KERN_PROTECTION_FAILURE que je comprends être quelque chose à voir avec l'accès aux données. L'accident semble se produire juste après que je sauve l'image obtenue à partir du UIImagePicker. Des idées?

+1

Probablement le délégué du sélecteur d'image. Est-il possible que vous l'ayez sorti? Votre ami peut toujours envoyer les journaux de plantage. Recherche google pour savoir comment les obtenir avec iTunes et comment symboliser. –

+0

Je ne pense pas l'avoir publié. Je rejette seulement le sélecteur dans la méthode de délégué didFinishPickingMediaWithInfo. Bien que je devrais peut-être utiliser l'information retournée avant que je rejette le sélecteur? Actuellement, je rejette d'abord le sélecteur, puis j'utilise l'image retournée. –

Répondre

3

Il se peut que vous soyez en train de relâcher quelque chose. Si vous utilisez Snow Leopard, exécutez l'analyseur statique (Cmd-Shift-A) et recherchez les erreurs de mémoire.

Le fait qu'il se bloque après une erreur de mémoire suggère qu'un UIViewController a publié sa vue. Avez-vous des UIViewControllers qui observent NSNotifications, ou qui pourraient changer leurs IBOutlets alors qu'ils sont hors écran? C'est une cause fréquente de ce genre de crash. Assurez-vous que vous êtes correctly memory managing your IBOutlets. Les UIViewControllers ne doivent jamais jouer avec leurs IBOutlets (ou leurs composants d'interface utilisateur) lorsqu'ils ne sont pas affichés. Même si vous ne faites pas cette erreur, si vous n'implémentez pas les choses comme indiqué dans le lien ci-dessus, vous pouvez toujours planter après les avertissements de la mémoire. MemoryWarning était une très bonne idée, et les choses se sont améliorées, mais Apple n'a pas encore tout à fait cuit tous les problèmes autour de comment il joue avec UIViewController. Le développeur doit toujours être très prudent.

+0

Bonjour. J'ai essayé Static Analyzer et aucune erreur n'est apparue. En fait, il ne s'est rien passé, sauf un message "Succeeded" au bas de la fenêtre. Très étrange. –

+0

Pas si étrange. Cela signifie simplement que vous n'avez pas d'erreurs évidentes. La mauvaise gestion des IBOutlets ne sera pas interceptée par clang, pas plus que les notifications aux objets libérés. –

+0

De mon fichier journal, je peux voir ce qui suit. Cela signifie-t-il que le problème se produit sur [PictureView clearPage]? Type d'exception: EXC_BAD_ACCESS (SIGBUS) des codes d'exception: KERN_PROTECTION_FAILURE à 0x0000000F Crashed Discussion: 0 0 Fil bloqué: 0 libobjc.A.dylib \t 0x00003ebc objc_msgSend + 20 1 MyApp \t 0x0000378a - [PictureView clearpage] (PictureView .m: 79) –

0

Votre ami devrait venir sur votre ordinateur et le lancer avec NSZombieEnabled. C'est le meilleur moyen de déboguer ces problèmes.

+0

Oui, c'est ce que j'aimerais faire, mais c'est plutôt impossible. N'y a-t-il aucun moyen d'enregistrer quelque chose comme ça? –

Questions connexes