Frage

Gibt es eine Möglichkeit zu erkennen, wenn ein NSView wird dealloc'ed werden?

Der Grund dafür ist, ich habe ein paar einfache Delegierte (wie ein NSTextField Delegierten, dass Griffe -control: Textview: doCommandBySelector: die Rückkehr / Tabulatortasten ermöglichen eingegeben werden). Ich möchte ihn nur Delegierte kleben Objekt in der Spitze, verdrahten die Delegierten Verbindung des NSTextField und nutzen.

Und es funktioniert, aber die Delegierten nie auch nach dem NSTextField freigegeben es verknüpft ist, wird freigegeben, so dass die Delegatobjekt Lecks.

Ich mag die Delegatobjekt der Lage sein, zu erkennen, wenn die NSTextField dealloc'ed ist, aber ich kann von irgendeiner Weise nicht denken, dies zu tun, die Blätter, die ich zu dem Delegatobjekt einen separaten Link zu speichern aus einige andere Controller und manuell an einem gewissen Punkt freisetzen, die als ideal sehr viel geringer ist. Irgendwelche Ideen?

War es hilfreich?

Lösung

Ich habe früher für dieses einen guten Blick hatte, und es scheint keinen Weg, um zu beobachten, wenn ein Objekt freigegeben wird. Ich habe einen Weg gesehen in einer schwachen Zeiger Klasse zu tun, aber es geht isa Swizzling, die böse bekommen. Hier ist die Website: http://www.cocoadev.com/index.pl?WeakPointers

Objekte, die aus einer Nib-Datei erstellt werden, sollten aufgehoben werden, wenn der Inhaber der Feder freigegeben wird, es sei denn, sie an anderer Stelle zurückgehalten werden. Wenn zum Beispiel ein NSWindowController wird ausgeplant wird es alle Objekte freizugeben, die erstellt wurden, wenn die Spitze geladen wurde. Wenn Ihr Delegat Objekte nicht freigegeben werden, vielleicht ist es, weil sie an anderer Stelle zurückgehalten werden, oder gibt es einen Zyklus beibehalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top