Partir de l'icône " Application " (NSApplication) pour aller vers le delegate (le contrôleur bien souvent, mais ça peut être n'importe quoi d'autre... une vue perso, une fenêtre perso...)
Je vois bien l'outlet delegate apparaà®tre mais le lien semble sans effet. En tout cas, je ne vois pas bien le rapport avec le fait de quitter l'application à la fermeture de la dernière fenêtre.
Le rapport est simple... Quand l'application voit que la dernière fenêtre est fermée, elle demande à son delegate si elle doit quitter.
D'accord mais comment le delegate le sait-il?
L'instance NSApplication (qui correspond à ton application, bien sûr, et qui est accessible par NSApp) peut être avoir un delegate, c'est à dire un autre objet qui va répondre à certains message émis par NSApp.
Dans l'exemple de la dernière fenêtre, ce qu'a écrit Schlum est entièrement exact : lorsque la dernière fenêtre est fermée, le gestionnaire de fenêtre va informer NSApp qu'il n'y a plus de fenêtre ouverte. NSApp va alors voir si il a un delegate. Si oui, alors il va tenter d'exécuter la méthode applicationShouldTerminateAfterLastWindowClosed: de ce delegate. La valeur retournée par ce delegate (YES ou NO) va déterminer le comportement de NSApp : il se ferme (fermeture de ton appli) ou non.
La question maintenant, semble de savoir comment connecter un delegate à NSApp, et surtout quel objet va jouer le rôle de delegate. Et là , il y a du boulot, car il y a un certain nombre de concepts que tu n'appréhende pas encore bien.
Ha ok, il faut quand même ajouter le bout de code applicationShouldTerminateAfterLastWindowClosed. Je pensais que c'était le bout de code OU passer par IB.
Réponses
Je vois bien l'outlet delegate apparaà®tre mais le lien semble sans effet. En tout cas, je ne vois pas bien le rapport avec le fait de quitter l'application à la fermeture de la dernière fenêtre.
D'accord mais comment le delegate le sait-il?
Ben... Tu lui dis dans le code de retourner YES ou NO ??? (par défaut, si le delegate ne répond pas, c'est NO...)
L'instance NSApplication (qui correspond à ton application, bien sûr, et qui est accessible par NSApp) peut être avoir un delegate, c'est à dire un autre objet qui va répondre à certains message émis par NSApp.
Dans l'exemple de la dernière fenêtre, ce qu'a écrit Schlum est entièrement exact : lorsque la dernière fenêtre est fermée, le gestionnaire de fenêtre va informer NSApp qu'il n'y a plus de fenêtre ouverte.
NSApp va alors voir si il a un delegate. Si oui, alors il va tenter d'exécuter la méthode applicationShouldTerminateAfterLastWindowClosed: de ce delegate. La valeur retournée par ce delegate (YES ou NO) va déterminer le comportement de NSApp : il se ferme (fermeture de ton appli) ou non.
La question maintenant, semble de savoir comment connecter un delegate à NSApp, et surtout quel objet va jouer le rôle de delegate.
Et là , il y a du boulot, car il y a un certain nombre de concepts que tu n'appréhende pas encore bien.
Je pensais que c'était le bout de code OU passer par IB.
Merci, ça fonctionne très bien, ouf!
ça ça concernait ta question du moment, à savoir... comment définir un delegate.