Déplacement ce code à -windowDidLoad
est généralement une valeur sûre, il est appelé après la fenêtre est complètement chargée par rapport à -awakeFromNib
où vous pouvez potentiellement rencontrer des problèmes parce que l'ordre sur lequel il est appelé tous les objets de votre plume n'est pas défini.
En général, il est recommandé de noter mentalement toutes les initialisations que vous effectuez, quelles parties nécessitent une interface utilisateur pour fonctionner correctement, quelles parties peuvent être différées jusqu'à ce que l'utilisateur effectue une action, etc. Par exemple, il est bon de retarder des tâches telles que l'exécution d'une extraction de données de base jusqu'à la dernière minute, au cas où vous auriez une fenêtre qui n'est pas ouverte jusqu'à ce que l'utilisateur la demande. D'un autre côté, vous allez parfois travailler avec un objet comme une vue en plan dont la source de données doit être pré-remplie pour que les méthodes de persistance fonctionnent. Une fois que vous savez ce que vous faites et dans quel ordre cela doit être fait, vous pouvez choisir une combinaison d'init, awakeFromNib, yyyWillLoad, ou xxxDidLoad et vous vous occuperez de beaucoup de bugs comme ça avant ils ont une chance de causer des problèmes.
@ctshryock: vous devriez vraiment considérer cette réponse. Mon post est seulement une réponse à votre question. Cependant, cette réponse décrit ce que vous devez faire dans une application réelle. – cocoafan
conseils pris, merci à vous deux! – catsby