Versuchen, das ausgewählte Segment eines NSToolbarItem
, das ist NSSegmentedControl
über Verbindungsbindung zu einer Eigenschaft (optionSegment). Subklassen die Fenstersteuerung als solcheVerhindert Cocoa-Verbindungsbindung zu NSToolbarItem das Deinitialisieren?
class MyWindow: NSWindowController {
dynamic var optionSegment: Int = 0
override func windowDidLoad() {
super.windowDidLoad()
}
}
Alternativ setzen die optionSegment Eigenschaft in der NSDocument
Unterklasse und dass binden. Jede Arbeit. Das Problem ist, dass mit dieser Bindung, oder scheinbar jede Bindung an NSToolbarItem
, keines meiner Objekte (Ansichten, View-Controller, Dokument, etc) deinitialisieren wird. Mit einer Bindung tun sie das nicht. Entferne die Bindung und sie tun es.
Irgendwelche Ideen, warum dies so sein könnte? Vorschläge? Ziemlich ratlos.
Vielen Dank!
Sie beabsichtigen zu entziehen? [Ich musste feststellen, dass ich Bindings explizit abbrechen musste, um die Freigabe des Fenstercontrollers zu veranlassen] (http://stackoverflow.com/questions/23944436/should-i-need-to-unbind-cocoa-bindings-in-dealloc -of-Fenstercontroller). Es sollte nicht so sein, aber es ist so. An dieser Stelle würde ich wahrscheinlich zurückgehen und sicherstellen, dass alle meine IBOutlets "schwach" sind, um sicherzustellen, dass die einzigen "starken" Referenzen in der Ansichtshierarchie sind. Sie könnten * ein starkes IBOutlet haben, das verhindert, dass die Dealloc die View-Hierarchie aufplustern, obwohl ich mir nicht sicher bin, warum das nur für die Bindung wichtig wäre. – stevesliva
Es ist schnell, ich beziehe mich also auf die Deinit-Methode der Klassen. Ich werde in den von Ihnen bereitgestellten Link schauen und sehen, was innerhalb von Swift möglich ist. Vielen Dank! – JKaz
Ohne Bindungen wird die Deinit {} -Methode des Fenster-Controllers zuerst aufgerufen, und diese wird durch den Ansichts-Controller, das Dokument, die Ansichten, die Daten usw. gekippt. Jedes Objekt erhält seinen Inhalt in logischer Reihenfolge. Mit nur einer einzigen Eigenschaft, die an ein einzelnes NSToolbarItem gebunden ist, wird der Deinit des Fenstercontrollers nicht aufgerufen, und dann auch keiner der anderen, so dass der Code nicht an die Stelle gelangt, an der ich den Code abreißen könnte Bindungen. Es gibt keine starken IBOutlets, die, wie Sie betonen, auch ein Faktor ohne Bindungen wären. – JKaz