NSTableView en mode Debug (OK) et Release (HS) avec Xcode 4.3.3
Borongaj
Membre
Bonjour à tous,
j'ai migré tout récemment de Xcode 3.3.6 à Xcode 4.3.3, j'ai nettoyé tout le code qui en avait besoin, fait les modifications et ajouts qui s'imposent (certificats, Developer Id, etc) et j'ai testé (mode Debug) mon application qui fonctionne parfaitement bien, avec zéro warning.
Or, juste avant diffusion en ligne de l'archive générée par Xcode, je me suis rendu compte que je ne pouvais plus du tout sélectionner de lignes dans toutes les TableView de mon application, une fois celle-ci compilée en mode Release.
Tout fonctionnait parfaitement bien en Debug et Release sous Xcode 3.3.6.
Tout fonctionne bien en mode Debug sous Xcode 4.3.3.
Alors qu'en mode Release, lorsque je sélectionne une ligne dans une TableView, les données de la ligne sont bien affectées à mes TextView, mais la ligne n'est pas en surbrillance. Le cadre bleu de sélection semble rester sur la ScrollView qui contient ma TableView.
Une idée pour éclairer ma lanterne ? Car là ... j'avoue que je ne comprend pas tout...
Merci beaucoup.
j'ai migré tout récemment de Xcode 3.3.6 à Xcode 4.3.3, j'ai nettoyé tout le code qui en avait besoin, fait les modifications et ajouts qui s'imposent (certificats, Developer Id, etc) et j'ai testé (mode Debug) mon application qui fonctionne parfaitement bien, avec zéro warning.
Or, juste avant diffusion en ligne de l'archive générée par Xcode, je me suis rendu compte que je ne pouvais plus du tout sélectionner de lignes dans toutes les TableView de mon application, une fois celle-ci compilée en mode Release.
Tout fonctionnait parfaitement bien en Debug et Release sous Xcode 3.3.6.
Tout fonctionne bien en mode Debug sous Xcode 4.3.3.
Alors qu'en mode Release, lorsque je sélectionne une ligne dans une TableView, les données de la ligne sont bien affectées à mes TextView, mais la ligne n'est pas en surbrillance. Le cadre bleu de sélection semble rester sur la ScrollView qui contient ma TableView.
Une idée pour éclairer ma lanterne ? Car là ... j'avoue que je ne comprend pas tout...
Merci beaucoup.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Dès que j'ai basculé l'option 'Optimization Level' de 'Fastest, Smallest' à 'None', tout est devenu ok dans les TableView ! /huh.gif' class='bbc_emoticon' alt='???' />
Quelqu'un pourrait m'éclairer sur cette option ?
J'en profite pour ajouter une question de plus : je suis obligé de laisser l'option 'Architectures' sur '32 bits', sinon, en cas de 'Standard (32/64 bits)' j'ai des bugs d'affichage qui surviennent ! /huh.gif' class='bbc_emoticon' alt='???' />
Sauriez-vous si c'est lié ou si ce phénomène est connu ?
Merci.
Pour Optimization Level:
- Fastest: le compilateur doit essayer de rendre le code plus rapide (si besoin, au dépends de la taille).
- Smallest: le compilateur doit essayer de rendre le code plus petit (si besoin, au dépends de la vitesse).
- None: pas d'optimisation. C'est normal que ce soit le choix pour Debug, parce qu'autrement tu ne pourrais pas forcément mettre un point d'arrêt sur chaque ligne de ton programme.
Hormis un bug du compilateur (je ne pense pas), il n'y a aucune raison que ça joue.
Tu devrais pouvoir compiler indiféremment pour 32 ou 64 bits, ça change la taille des entiers, mais à moins d'avoir des algo optimisés aux petits oignons (et donc savoir ce que tu fais), ça ne joue pas.
Ce que je pense, c'est que tu gères mal la mémoire. Commence par lancer une analyse statique de ton code, puis un coup d'Instruments/Zombies.
Ce qui est curieux, c'est que c'est exactement le même code qui s'exécute parfaitement bien avec Xcode 3.2.6, mais pas avec Xcode 4.3.3. L'option "Fastest, smallest" étant active sur les deux. Je suis donc parti du principe que mon code n'était pas fautif. Est-ce une conclusion erronée ?
Je précise que je n'ai pas d'algo optimisés qui pourraient poser problèmes à ce point là .
La seule chose qui a changé lors du passage d'un Xcode à l'autre, c'est que je suis passé d'une compil : PPC/Intel (Xcode 3) à une compil : Intel 32/64 (Xcode 4).
J'ai lancé quelques Zombies avant de poster ici. Pas de soucis apparemment. En revanche, qu'entends-tu par "analyse statique" ? Menu "Product > Analyse" ? Car ça a été fait également.
Merci pour ton aide.
Oui, je le crois ;-)
C'est souvent lors de gros changement que des bugs cachés se révèlent. (plus souvent lors d'une nouvelle version d'OS).
Et le Base SDK n'a pas changé ?
Oui. Et tu n'as vraiment rien ? C'est super rare, même pour un programmeur expérimenté.
Sinon, effectivement, j'avais fait un amalgame de raccourcis claviers entre le Build et l'Analyse.
Au build, rien, mais à l'Analyse : "Mamma Mia" !!!!! /crazy.gif' class='bbc_emoticon' alt=' ' />
Du coup, j'ai une liste honteuse de Logic Error et Memory (potential leak) ! /huh.gif' class='bbc_emoticon' alt='???' />
Je vais m'atteler à résoudre chacune d'entre-elles et vérifier si l'exécution en 64 bits, au final, fonctionne mieux /cool.gif' class='bbc_emoticon' alt='8--)' />
Merci pour ton aide qui m'a mis sur la bonne voie !
Si ça ne résous pas mes soucis, je reviendrai me manifester ! ;-)
Bonne journée.
Plus une seule n'apparait lors d'une Analyse, hormis quelques Dead Store (surement par excès de zèle de la part d'Xcode).
Le phénomène persiste. Dès que je compile pour le 64 bits, j'ai des blocages, les TableView ne se sélectionnent plus, des objets visuels (boutons, etc) ne disparaissent plus lorsque c'est nécessaire, etc... /huh.gif' class='bbc_emoticon' alt='???' />
Une idée ?