2010-06-03 17 views
0

J'utilise ce code pour créer mon UIWindowSuivi EXC_BAD_ACCESS sur iPad

UIMyWindow* win = [[UIMyWindow alloc] 
        initWithFrame:[[UIScreen mainScreen] applicationFrame]]; 

UIMyWindow est rien, il a juste un pointeur spécial à une classe C++ qui fait des reports de ObjectiveC.

Mon application a récemment commencé à se bloquer après avoir ajouté une ligne de code qui n'a rien à voir avec l'erreur. La ligne de code que j'ajoute est juste l'allocation d'un objet C++ mais l'exécution du programme n'atteint jamais cette ligne.

Assez intéressant mon code fonctionne en version.

Ma seule supposition est que j'ai fait de la corruption de mémoire sur un endroit complètement différent. Mes questions sont: Quel type de corruption de la mémoire peut être? Et y a-t-il de bonnes pratiques pour les traquer?

Répondre

1

Vous avez certainement un message qui est envoyé à un objet désalloué.

Vous devriez essayer de déboguer votre programme avec Instruments.app. Cela devrait vous montrer les problèmes de mémoire potentiels.

Jetez également un coup d'œil à la variable d'environnement NSZombieEnabled. Fondamentalement, il laisse un objet fictif à l'endroit de l'objet désalloué. Vous serez averti lorsqu'un message est envoyé à cet objet factice, vous permettant de voir où se trouve le problème.

+0

Je viens de remarquer que j'ai ce message dans le journal: Attention: la langue actuelle ne correspond pas à ce cadre. NSZombieEnabled n'a pas aidé. My Instruments.app a cessé de fonctionner la dernière fois que j'ai mis à jour le DevEnv ou peut-être que cela ne fonctionne pas parce que je n'ai testé que sur iPad. Je vais essayer d'obtenir mon application sur iPhone si cela ne fonctionne pas, je peux essayer de mettre à jour le DevEnv. – Aleks