Question

Est-il possible de détecter quand un NSView sera dealloc'ed?

La raison en est, j'ai quelques délégués simples (comme un délégué NSTextField qui gère -contrôle: textView: doCommandBySelector: pour permettre les touches retour / onglet à saisir). Je voudrais simplement coller cet objet délégué dans la pointe, câbler connexion délégué de la NSTextField et le faire fonctionner.

Et il fonctionne, mais le délégué est jamais sorti, même après l'NSTextField il est lié à est libéré, de sorte que les fuites d'objet délégué.

Je voudrais l'objet délégué pour être en mesure de détecter lorsque le NSTextField est dealloc'ed, mais je ne peux pas penser à une façon de faire, ce qui me laisse avoir à stocker un lien séparé à l'objet délégué de un autre contrôleur et relâchez manuellement à un moment donné qui est très loin d'être idéal. Toutes les idées?

Était-ce utile?

La solution

J'ai eu un bon aperçu de ce auparavant, et il ne semble pas être un moyen d'observer lorsqu'un objet est désalloué. Je l'ai vu une façon de le faire dans une faible classe de pointeur, mais il implique isa swizzling, qui peut se gâter. Voici le site: http://www.cocoadev.com/index.pl?WeakPointers

Les objets qui sont créés à partir d'un fichier nib doivent être désallouées lorsque le propriétaire de la pointe est désaffectée, à moins qu'ils soient conservés ailleurs. Par exemple, lorsqu'un NSWindowController est désalloué il libérera tous les objets qui ont été créés lorsque la pointe a été chargé. Si vos objets délégués ne sont pas désallouées, peut-être parce qu'ils sont conservés ailleurs, ou il y a un cycle retenir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top