Vous essayez de définir le segment sélectionné d'un NSToolbarItem
qui est un NSSegmentedControl
via liaison de liaison à une propriété (optionSegment). Sous-classer le contrôleur de fenêtre en tant que telLa connexion Cocoa liée à NSToolbarItem empêche-t-elle la désinitialisation?
class MyWindow: NSWindowController {
dynamic var optionSegment: Int = 0
override func windowDidLoad() {
super.windowDidLoad()
}
}
En variante, mettre la propriété optionSegment dans la sous-classe NSDocument
et lier à cela. Chaque travail. Le problème est qu'avec cette liaison, ou apparemment aucune liaison à NSToolbarItem
, aucun de mes objets (vues, contrôleurs de vue, document, etc.) ne désinitialisera. Avec une liaison, ils ne le font pas. Retirez la reliure et ils le font.
Des idées pourquoi tout cela pourrait-il être ainsi? Suggestions? Assez perplexe.
Merci!
Vous voulez dire deallocate? [J'ai trouvé que je devais démonter explicitement les liaisons pour que le contrôleur de fenêtre se désengage] (http://stackoverflow.com/questions/23944436/should-i-need-to-unbind-cocoa-bindings-in-dealloc -of-windowcontroller). Cela ne devrait pas être le cas, mais ça l'est. À ce stade, je reviendrai probablement et m'assurerai que tous mes IBOutlets sont 'faibles 'pour s'assurer que les seules références' strong' sont dans la hiérarchie de la vue. Vous * pourriez * avoir un IBOutlet fort qui empêche le dealloc d'onduler la hiérarchie de vue, bien que je ne sois pas sûr que cela ait de l'importance seulement avec la liaison. – stevesliva
C'est Swift, donc je fais référence à la méthode deinit des classes. Je vais regarder dans le lien que vous avez fourni et voir ce qui est possible dans Swift pour résoudre ce problème. Merci! – JKaz
En l'absence de liaison, la méthode deinit {} du contrôleur de fenêtre est appelée en premier et se répercute sur le contrôleur de vue, le document, les vues, les données, etc. Chaque objet reçoit sa définition dans l'ordre logique. Avec même une seule propriété liée à un seul NSToolbarItem, le deinit du contrôleur de fenêtre n'est pas appelé, et aucun des autres ne l'est non plus, donc le code n'atteint pas le seul endroit où je serais capable d'abattre le fixations. Il n'y a pas d'IBOutlets forts qui, comme vous le soulignez, seraient aussi un facteur sans liaison. – JKaz