2010-09-24 5 views
0

Je suis confronté à un problème assez "mystérieux". Mon application fonctionne correctement avec toutes les configurations de construction sur les appareils fonctionnant sous iOS 4.x, mais elle se bloque sur l'iPhone exécutant iOS 3.x immédiatement après le lancement, mais seulement lorsqu'il est compilé avec la configuration de la version. Avec la configuration Debug, elle fonctionne sans problème.App se bloque immédiatement sur iOS 3.x lorsqu'il est compilé avec la version Release configuration

J'ai passé beaucoup de temps à enquêter sur la cause possible de cela, mais je n'ai pas eu de chance jusqu'ici. J'utilise XCode 3.2.4 avec base SDK iOS 4.1, en utilisant le compilateur LLVM GCC. Selon le journal des pannes, l'application se bloque sur la première ligne de code dans applicationDidFinishLaunching: implémentation de la méthode, où rien [[SomeObject alloc] init] est appelé, signalant EXC_BAD_ACCES, indiquant que la méthode alloc n'alloue pas correctement l'instance (?) .

Lorsque je passe au compilateur GCC 4.2, les rapports de journaux accident complètement autre lieu d'origine accident, mais je suppose que cela est tout à fait le même ...

Je suppose que je me manque quelques drapeaux du compilateur ou l'éditeur de liens ou si , mais ne peut pas savoir lequel. J'ai essayé toutes les solutions que j'ai trouvées jusqu'ici, mais rien n'y fait.

Merci pour toute aide.

+0

l'affichage du code qui provoque le crasher aiderait. – TomH

+0

Hmm, c'est marrant, car même quand je supprime/commente un morceau de code "problématique", il se bloque simplement sur l'instruction suivante. On dirait qu'il n'alloue pas de structures de données ou, plus probablement, que les classes ne sont pas reconnues correctement ou quoi que ce soit. Je m'en fous ... – Matthes

+0

Après une enquête plus poussée, j'ai découvert que cela avait peut-être quelque chose à voir avec les bibliothèques tierces ou peut-être comment elles sont liées. Il semble qu'il se bloque sur les appels aux classes d'une telle bibliothèque. Des idées, s'il vous plaît? – Matthes

Répondre

1

Utilisez-vous le compilateur LLVM pour la version finale? Dans mon expérience, le compilateur LLVM reliera faiblement les appels d'API. Cela permet à une application 3.x de s'exécuter même si elle a des appels d'API 4.x tant que ces appels ne sont jamais exécutés. Les applications 3.x compilées avec GCC se bloqueront au lancement lorsque le chargeur dynamique tentera de résoudre les API 4.x.

Questions connexes