NSTableView en mode Debug (OK) et Release (HS) avec Xcode 4.3.3

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.

Réponses

  • J'ai poussé les vérifications entre les 'Build Settings' du mode Debug et Release, en modifiant les options du Release petit à  petit en comparant avec le Debug.



    Dès que j'ai basculé l'option 'Optimization Level' de 'Fastest, Smallest' à  'None', tout est devenu ok dans les TableView ! image/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 ! image/huh.gif' class='bbc_emoticon' alt='???' />



    Sauriez-vous si c'est lié ou si ce phénomène est connu ?



    Merci.
  • CéroceCéroce Membre, Modérateur
    Tu as fait exactement ce que je t'aurais recommandé: jouer au jeu des sept erreurs.



    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.
  • Merci pour ta réponse Céroce !



    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.
  • CéroceCéroce Membre, Modérateur
    'Borongaj' a écrit:


    Je suis donc parti du principe que mon code n'était pas fautif. Est-ce une conclusion erronée ?


    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).


    'Borongaj' a écrit:


    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).


    Et le Base SDK n'a pas changé ?


    'Borongaj' a écrit:


    En revanche, qu'entends-tu par "analyse statique" ? Menu "Product > Analyse" ? Car ça a été fait également.


    Oui. Et tu n'as vraiment rien ? C'est super rare, même pour un programmeur expérimenté.
  • Ah, effectivement, le Base SDK a changé, puisque je suis passé de 10.5 à  10.6.



    Sinon, effectivement, j'avais fait un amalgame de raccourcis claviers entre le Build et l'Analyse.

    Au build, rien, mais à  l'Analyse : "Mamma Mia" !!!!! image/crazy.gif' class='bbc_emoticon' alt=' B) ' />



    Du coup, j'ai une liste honteuse de Logic Error et Memory (potential leak) ! image/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 image/cool.gif' class='bbc_emoticon' alt='8--)' />



    Merci pour ton aide qui m'a mis sur la bonne voie !
  • CéroceCéroce Membre, Modérateur
    J'espère que ça résoudra tes problèmes, ce n'est pas sûr, mais au moins l'analyse statique entraine à  coder plus proprement.
  • Merci en tout cas !



    Si ça ne résous pas mes soucis, je reviendrai me manifester ! ;-)



    Bonne journée.
  • Me revoilà , avec toutes les alertes Logic Error et Memory corrigées.

    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... image/huh.gif' class='bbc_emoticon' alt='???' />



    Une idée ?
Connectez-vous ou Inscrivez-vous pour répondre.