windowWillClose: (even if it wasn't open?)
Antilog
Membre
Bonjour,
Admettons que j'ai une fenêtre de préférences pour mon application dans une nib (un nib?), cette (ce?) nib est chargé(e) par un singleton au lancement de l'application.
Pour mettre à jour mes préférences, je positionne un Delegate sur ma fenêtre, et je code la méthode windowWillClose:
Quel ne fut pas mon étonnement de voir cette méthode appelée quand je quitte l'application, même si je n'ai jamais ouvert la fenêtre de préférences  :o.
Bon, en fait, ça ne me dérange pas vraiment, mais comme je n'aime pas faire travailler l'ordinateur pour rien (mettre à jour des infos qui n'ont aucune chance d'avoir changé), j'ai mis à jour ma méthode comme ceci:
Question 1: isVisible et isMignaturized suffisent pour vérifier que la fenêtre est "affichée"?
Question 2: J'ai fait une bêtise ou est-ce un comportement normal (nib chargé(e) => fenêtre affichée?)
Question annexe: quelqu'un pourra me donner le sexe du/de la nib?Â
Admettons que j'ai une fenêtre de préférences pour mon application dans une nib (un nib?), cette (ce?) nib est chargé(e) par un singleton au lancement de l'application.
Pour mettre à jour mes préférences, je positionne un Delegate sur ma fenêtre, et je code la méthode windowWillClose:
Quel ne fut pas mon étonnement de voir cette méthode appelée quand je quitte l'application, même si je n'ai jamais ouvert la fenêtre de préférences  :o.
Bon, en fait, ça ne me dérange pas vraiment, mais comme je n'aime pas faire travailler l'ordinateur pour rien (mettre à jour des infos qui n'ont aucune chance d'avoir changé), j'ai mis à jour ma méthode comme ceci:
// ApplicationController est delegate de la fenêtre de préférences<br />- (void)windowWillClose:(NSNotification *)aNotification<br />{<br /> // Test isVisible et isMignaturized, car windowWillClose est appelé à la fermeture de l'Appl., même si la fenêtre n'a pas été ouverte!<br /> if ([aNotification object] == [prefsWindow] && ([[aNotification object] isVisible] || [[aNotification object] isMiniaturized]))<br /> {<br /> // Mettre à jour les préférences
Question 1: isVisible et isMignaturized suffisent pour vérifier que la fenêtre est "affichée"?
Question 2: J'ai fait une bêtise ou est-ce un comportement normal (nib chargé(e) => fenêtre affichée?)
Question annexe: quelqu'un pourra me donner le sexe du/de la nib?Â
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Pour le vérifier, il suffit que tu lances l'utilitaire Quartz Debug (dans les applications Developper) pour voir que ta fenêtre, même "non ouverte", est présente dans la liste des fenêtres de ton appli. Simplement, elle est "off-screen", pour montrer qu'elle n'est pas visible.
Il me parait donc normal que le delegate soit appelé quand le système ferme ces fenêtres, off-screen ou on-screen.
La méthode isVisible me parait très adapatée à ton cas (je pense que isMignaturized est redondant).
.
En effet, Quartz Debug est un outil que je devrais utiliser plus
Toutefois, j'ai vérifié, il faut bien tester isVisible et isMiniaturized. Une fenêtre dans le doc n'est pas considérée comme visible!