Problème avec une NSTableView
Salut.
J'ai un gros bug dans mon appli pour lequel je m'arrache les cheveux depuis quelques temps .... :crackboom:-
J'ai la fenêtre principale de mon appli qui contient, entre autre, une vue perso et une NStableView.
Je clique sur un bouton qui m'affiche une fenêtre secondaire gérée par un window controller. Cette fenêtre contient elle aussi une NSTableView. La sélection de lignes de cette NSTableView me fait changer l'affichage de la vue perso.
Lorsque je valide ma fenêtre et qu'elle se referme, si j'ai une ligne sélectionnée dans la table view, l'appli plante, sinon, ça roule .....
Le code de mon bouton de validation est archi simple :
Je mets une copie de la fenêtre thread du debugger, puisqu'il apparaà®t lorsque l'appli plante :

C'est ça qui me fait dire que le problème vient d'une NSTableView. Mais comment savoir laquelle est incriminée déjà ?
Ensuite, si vous avez une idée ....
J'ai un gros bug dans mon appli pour lequel je m'arrache les cheveux depuis quelques temps .... :crackboom:-
J'ai la fenêtre principale de mon appli qui contient, entre autre, une vue perso et une NStableView.
Je clique sur un bouton qui m'affiche une fenêtre secondaire gérée par un window controller. Cette fenêtre contient elle aussi une NSTableView. La sélection de lignes de cette NSTableView me fait changer l'affichage de la vue perso.
Lorsque je valide ma fenêtre et qu'elle se referme, si j'ai une ligne sélectionnée dans la table view, l'appli plante, sinon, ça roule .....
Le code de mon bouton de validation est archi simple :
- (IBAction)valider:(id)sender<br />{<br /> id controlleur = [[NSApplication sharedApplication] delegate];<br /> <br /> [[self window]close];<br /> [controlleur setCheminController:nil];<br /> [NSApp stopModal];<br />}
Je mets une copie de la fenêtre thread du debugger, puisqu'il apparaà®t lorsque l'appli plante :

C'est ça qui me fait dire que le problème vient d'une NSTableView. Mais comment savoir laquelle est incriminée déjà ?
Ensuite, si vous avez une idée ....
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Même sans réponse de votre part, je crois que vous avez un effet subliminal sur moi, et je vois de suite les erreurs .... :fouf): :fouf): :fouf):
Dans mon action de validation, je fais :
ce qui a pour effet de faire un release sur l'instance du window controller. Mais je suis encore en train d'exécuter du code de ce window controller à cet instant ....! Donc panique !
Ce qui est bizarre, c'est que ça ne plante que lorsque une ligne est sélectionnée dans la table view de la fenêtre secondaire. Ca m'a envoyé sur une mauvaise piste ....
Question d'ordre générale : lorsque vous affichez une fenêtre gérée par un window controller, vous utilisez quoi en général comme code pour le créer et le supprimer ?
créer / afficher
if(!windowController)
[windowController new]; //(ou alloc/init, je met un [super initWithNibName:@MyNib] dans le init)
[windowController showWindow:nil];
//
suprimmer
//je ne dealloc jamais mes window controllers, je sais pas si c'estr très judicieux, mais on les charge qu'une fois.