2010-06-13 7 views
0

Je viens de mettre à niveau vers SDK 3.2. Mon application s'exécute dans Simulator 3.0 en mode débogage, mais lorsque je change le simulateur pour fonctionner avec 3.2, il se bloque avec EXEC_BAD_ACCESS.L'application se bloque lors de l'exécution dans iPhone simulateur 3.2 (Fonctionne bien dans le simulateur 3.0)

Il se bloque à la méthode objc_msgsend.

int main (int argc, char * argv []) {

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
int retVal = UIApplicationMain(argc, argv, nil, nil); <======== THE STACK TRACE starts here. 
[pool release]; 
return retVal; 

}

Toute idée de ce qui se passe? Je n'ai absolument aucune idée. Toute aide/suggestion sera grandement appréciée?

Merci Une

Répondre

0

Il est probable que vous utilisez le code désapprouvée.

La trace de pile que vous avez montrée est la boucle principale de l'application - ce n'est pas vraiment utile. Vous devez regarder plus loin dans la pile. Recherchez le code que vous avez écrit et voyez ce qui pourrait ne pas fonctionner.

Vous pourriez essayer d'enregistrer quelque chose avec des formateurs incorrects. par exemple: NSLog(@"%@", 55); (55 est un nombre entier, pas une chaîne). Peut-être que vous essayez de modifier un objet immuable.

Souhaitez-vous s'il vous plaît poster plus de la pile (ou le tout) afin que nous puissions le voir? Le code que vous avez écrit peut aider ici aussi.

+0

C'était la seule chose qui était sur mon stacktrace que j'ai écrit. Tout le reste provient de la bibliothèque de l'iphone. Aucun code n'est appelé quand cela arrive. Ma théorie: pomme a changé là Garbage Collector. Un message est envoyé à partir d'un morceau de code pour nettoyer un objet mais cet objet a déjà été nettoyé. Est-ce que ça a du sens? Si oui, comment le vérifier? Merci Un – amitabh

+0

Il n'y a aucun garbage collector dans le développement de l'iPhone. Vous devez libérer des choses. Peut-être que vous sur-relâchez des choses. Vous pouvez m'emil à "[email protected]" si vous souhaitez ou poster votre code source ici. Utilisez 'NSLog()' pour déterminer où le code plante. – Moshe