[Réglé] Perte du contenu lors de la demande du premier enregistrement !
wisky
Membre
Bonjour à tous !
J'ai une application document based sur 10.5 qui a la mauvaise manie de vider un nouveau document lors du premier enregistrement.
Voici la démarche :
1) je crée un nouveau document : file >> New
2) je le modifie...
3) je veux l'enregistrer : file >> Save
Sauf que là avant même d'avoir la fenêtre d'enregistrement le contenu du fichier à disparu et le fichier enregistré est vide !
J'y ai regardé de plus près (grâce au pas à pas du débug) et j'ai remarqué qu'il créai un nouveau document vierge avant d'enregistrer !
Quelqu'un aurait-il une idée du bug ? :why?: :why?: :why?:
J'ai une application document based sur 10.5 qui a la mauvaise manie de vider un nouveau document lors du premier enregistrement.
Voici la démarche :
1) je crée un nouveau document : file >> New
2) je le modifie...
3) je veux l'enregistrer : file >> Save
Sauf que là avant même d'avoir la fenêtre d'enregistrement le contenu du fichier à disparu et le fichier enregistré est vide !
J'y ai regardé de plus près (grâce au pas à pas du débug) et j'ai remarqué qu'il créai un nouveau document vierge avant d'enregistrer !
Quelqu'un aurait-il une idée du bug ? :why?: :why?: :why?:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Qu'est ce que ça veut dire exactement ? La fenêtre est fermée, l'icône a disparu du bureau ?
Remarque que ce ne sont pas les mêmes méthodes d'init qui sont appelées quand tu crées un nouveau document (ou autre objet) et quand tu le charges.
Tu as peut-être une différence entre une méthode init et initWithCoder:
J'ai mis les images écran. Elle sont d'en l'ordre.
Si l'écran et le fichier sont tous les deux vides, a priori, le problème ne provient pas de l'affichage, mais de la couche "données". Quand la commande Save est utilisée, tu dois faire quelque chose qui désalloue ces données ou modifie les pointeurs sur les données.
Cela ne ce produit que pour les nouveaux fichiers. Il y a beaucoup de class et sous-class ce qui rend le débug assez difficile même pour savoir le bout de code qui merde !
Donc : le menu Save pointe vers saveDocument: du firstResponder.
Dans ma sous classe de NSDocument j'ai donc mis :
A ce moment là l'effacement n'est pas encore fait ! c'est lors de l'appel de "[super saveDocument:sender];"
Sinon, j'utilise la fonction suivante pour retourner les données à sauvegarder :
Par contre là "s" est vide !
J'ai peu être pas fait tout ce qu'il fallait ?
Je me demande si c'est pas plûtot du côté de la création initiale que tu devrais chercher ...
Es-tu bien sûr que le nouveau document soit bien créé déclaré et "retenu".
On dirait que lors de la sauvegarde il considère qu'il n'y en a pas et fait alors ce qui aurait du l'être à la création ...
La création est réalisé correctement. Par contre, je regarderai si il est bien retenu !
Cela vien du fait que j'utilisait awakeFromNib au lieu de
- (void)windowControllerDidLoadNib:(NSWindowController *)aController
Pour savoir quand le chargement était fini !
Ca venait bien du début donc.
Euh, ben, à chaque fois que les objects contenus dans le nib instanciés...
Je t'avoue que je ne comprends pas bien ce qui change en déplaçant le code dans windowControllerDidLoadNib: