Déchargement d'un nib... où,quand,comment ?
Salut
J'essaye depuis tout à l'heure de lancer un nib quand l'utilisateur en a besoin, ça ce n'est pas dur, on peut utiliser par exemple [NSBundle loadNibNamed:@Fichier_Nib owner:moi]; ou initWithWindowNibName dans NSWindowController mais impossible de mettre la main une manière de le "décharger" de mémoire ? Oui, je n'aime pas trop le système de cache de Mac OS X qui garde tout en mémoire... enfin tant que je n'ai pas mon G5 avec et ses 4GO de RAM...
Bref, le nib n'a aucune raison d'être en mémoire durant la vie de mon programme, il n'est utilisé par aucune autre ressource, il ne possède qu'une classe NSWindowController soit rien de bien méchant.
Evidement sans faire un bundle indépenant, juste pouvoir le dé/charger à volonté à serait super
Comment ça une question tordue ???
Merci pour votre aide;
Michaël;
J'essaye depuis tout à l'heure de lancer un nib quand l'utilisateur en a besoin, ça ce n'est pas dur, on peut utiliser par exemple [NSBundle loadNibNamed:@Fichier_Nib owner:moi]; ou initWithWindowNibName dans NSWindowController mais impossible de mettre la main une manière de le "décharger" de mémoire ? Oui, je n'aime pas trop le système de cache de Mac OS X qui garde tout en mémoire... enfin tant que je n'ai pas mon G5 avec et ses 4GO de RAM...
Bref, le nib n'a aucune raison d'être en mémoire durant la vie de mon programme, il n'est utilisé par aucune autre ressource, il ne possède qu'une classe NSWindowController soit rien de bien méchant.
Evidement sans faire un bundle indépenant, juste pouvoir le dé/charger à volonté à serait super
Comment ça une question tordue ???
Merci pour votre aide;
Michaël;
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Je relance ce sujet un peu ancien certe, mais toujours d'actualité pour moi.
J'ai un projet avec plusieurs nib (genre un pour le menu, un pour la fenêtre principale, un pour les pref...).
Le chargement ne me pose pas de pb. Par contre, quand je ferme la fenêtre précédemment chargée, j'aimerai carrément tut désallouer (la fenêtre, le nib et les instances associées).
Est ce possible ?
Typiquement, les instances de "1er niveau" sont celles représentées par une icône dans la fenêtre principale de IB dans l'onget "Instances".
On y trouve généralement une ou plusieurs fenêntres, parfois des views, souvent des contrôleurs... Il faut donc releaser tout ce beau monde.
.
Donc lorsque je clicque sur le bouton fermer, ca déclenche une action dans mon NSWindowController. J'arrive à releaser le datasource.
Par contre, je pense que je garde mon NSWindowController et au chargement suivant, je recharge le nib ?
Je me demande si ca va marcher ca... Je tente ce soir.
Merci !
[tt][self autorelease];[/tt]
ce qui aura pour effet de décharger l'instance du windowController à la prochaine boucle événementielle.
.
.
Je regarde ça tout à l'heure.
J'arrive bien à "releaser" le datasource mais quand je recharge la fenêtre, que le nib soit rechargé ou pas.
J'ai l'impression que le nib ne réinstancie pas ses objets au 2eme chargement d'où sortie avec plantage sévère...
Du coup, j'ai viré la datasource du .nib et je l'instancie/release dans mon controller.
Une idée du pourquoi le nib réinstancie pas ses objets ?