Pergunta

Existe alguma maneira de detectar quando um NSView será dealloc'ed?

A razão é, eu tenho alguns delegados simples (como um delegado NSTextField que alças -controlar: textView: doCommandBySelector: permitir que as chaves de retorno / guia a ser inserido). Eu gostaria de se ater apenas este objeto delegado na ponta, fio a conexão delegado do NSTextField e tê-lo trabalhar.

E ela não funciona, mas o delegado não é liberado mesmo após o NSTextField ela está ligada a é liberado, assim que os vazamentos delegado objeto.

Eu gostaria que o objeto delegado para ser capaz de detectar quando o NSTextField é dealloc'ed, mas eu não posso pensar em alguma maneira de fazer isso, o que me deixa ter que armazenar um link separado para o objeto delegado algum outro controlador e manualmente liberá-lo em algum ponto que é muito menos do que ideal. Alguma idéia?

Foi útil?

Solução

Eu tive uma boa olhada para este anteriormente, e não parece haver nenhuma maneira de observar quando um objeto é desalocada. Eu vi uma maneira de fazê-lo em uma classe ponteiro fraco, mas envolve isa swizzling, que pode ficar desagradável. Aqui está o site: http://www.cocoadev.com/index.pl?WeakPointers

Os objetos que são criados a partir de um arquivo nib deve ser desalocada quando o dono da ponta é desalocada, a menos que eles são mantidos em outro lugar. Por exemplo, quando um NSWindowController é desatribuído que irá libertar quaisquer objectos que foram criados quando o aparo foi carregado. Se seus objetos delegados não estão sendo desalocada, talvez seja porque eles são mantidos em outro lugar, ou se houver uma reter ciclo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top