EXC_BAD_ACCESS sur sélection d'un menu

frOMfrOM Membre
19:40 modifié dans API AppKit #1
J'obtiens un signal EXC_BAD_ACCESS lorsque je tente de sélectionner un menu sur une application document-based. Ceci n'arrive qu'après avoir fermé un premier document et que je tente d'en ouvrir un second, tout se passe correctement à  la première ouverture.

Cela m'était déjà  arrivé avec une précédente application et le problème résidait dans des outlets mal connectés. Il n'en est rien cette fois-ci. Malheureusement aussi, je n'ai découvert le problème que très tardivement après avoir ajouté plusieurs classes.

Si je comprends bien, c'est un problème d'accès mémoire.

Une idée pour chercher l'origine du problème ?

Merci.

Réponses

  • muqaddarmuqaddar Administrateur
    19:40 modifié #2
    Oui.

    Pointeurs + débuggueur + NSLogs.
    Avance à  pas feutrés en mettant des pointeurs.
  • CéroceCéroce Membre, Modérateur
    19:40 modifié #3
    Ton programme essaie d'accéder à  de la mémoire en dehors de la zone qui lui est assignée. C'est un problème de pointeur, ou de deallocation prématurée. Commence par regarder dans le débogueur dans quelle méthode se trouve le programme lors du plantage. Ensuite, débogue en pas-à -pas avec le débogueur comme conseillé par muqaddar.

    Bien utile aussi: NSZombie.
  • frOMfrOM Membre
    19:40 modifié #4
    Je suis nul en gestion mémoire... J'ai résolu le problème par un pis-aller : mettre le garbage-collector en route... Le problème se manifestait dans l'appel d'un menu mais, si j'ai bien compris, l'erreur peut se situer très en amont.
  • CéroceCéroce Membre, Modérateur
    19:40 modifié #5
    Sans vouloir entrer dans le débat du bien fondé du ramasse-miettes ou non (qui a déjà  eu lieu), méfie-toi quand même, il présente un gros inconvénient: les frameworks de tierce-partie doivent être compilées avec le ramasse-miettes activé pour pouvoir être utilisées avec ton appli.
  • frOMfrOM Membre
    19:40 modifié #6
    C'est pour cela que je veux comprendre. Pour cette appli, ça va mais je risque de retomber sur le même problème avec impossibilité d'utiliser le technicien de surface  :'(
  • Eddy58Eddy58 Membre
    19:40 modifié #7
    Il n'y a pas de secrets, comme dis plus haut, il faut mettre les mains dans le cambouis : Pas à  pas, logs intensifs sur la méthode appelée par ton menu pour voir quelle ligne dans un premier temps déclenche le plantage.
  • RocouRocou Membre
    19:40 modifié #8
    Cela peux venir également d'une variable pas ou mal initialisée. ça c'est facile à  vérifier.
  • 19:40 modifié #9
    Affiche le debugger, ça aide grandement. Et puis n'hésite pas à  afficher la console en plus. Et fait-nous un screenshot de tout ça.
  • laudemalaudema Membre
    19:40 modifié #10
    EXC_BAD_ACCESS, chez moi, c'est toujours un objet que j'ai oublié de retenir et auquel est envoyé un message. Le meilleur outil me semble être "Instruments" menu Run -> Run with Performance Tool -> Zombies.
    On peut aussi taper "Debugging zombies" ou simplement EXC_BAD_ACCESS dans l'aide Xcode

    hth
  • frOMfrOM Membre
    19:40 modifié #11
    Que de pistes ! Que de pistes ! Pour l'instant, comme ça marche avec le ramasse-miettes, je vais aller plus avant. Je reviendrais plus tard sur ce problème. J'avais des problèmes avec les menus que je n'arrivais pas à  rendre actif " chose que j'avais pourtant réussi sur une autre appli ; encore un sujet à  approfondir ! C'est sans doute par là  que je devrai chercher.
  • tarultarul Membre
    19:40 modifié #12
    dans 1263808443:

    Que de pistes ! Que de pistes ! Pour l'instant, comme ça marche avec le ramasse-miettes, je vais aller plus avant. Je reviendrais plus tard sur ce problème. J'avais des problèmes avec les menus que je n'arrivais pas à  rendre actif " chose que j'avais pourtant réussi sur une autre appli ; encore un sujet à  approfondir ! C'est sans doute par là  que je devrai chercher.

    Je ne suis pas sûr que cela soit une bonne idée. Le gc va masquer ton problème de mémoire sans pour autant l'éradiquer. Si tu rajoutes d'autres fonctionnalités, il te sera plus difficile de découvrir l'origine de ton problème.
  • frOMfrOM Membre
    19:40 modifié #13
    J'en suis conscient mais je manque de temps pour l'instant pour me pencher sérieusement sur les problèmes de gestion de la mémoire.  >:) Et comme mes applis ne sortent pas de mon ordinateur, je ferme les yeux tant que ça passe. Mais ça ne pourra pas durer...
Connectez-vous ou Inscrivez-vous pour répondre.