0

有什么方法可以检测 NSView 何时会被释放?

原因是,我有一些简单的委托(例如处理 -control:textView:doCommandBySelector: 以允许输入返回/制表键的 NSTextField 委托)。我想把这个委托对象放在笔尖上,连接 NSTextField 的委托连接并让它工作。

它确实有效,但即使在它链接到的 NSTextField 被释放后,委托也不会被释放,因此委托对象泄漏。

我希望委托对象能够检测到 NSTextField 何时被解除分配,但我想不出任何方法来做到这一点,这使我不得不从其他控制器存储到委托对象的单独链接并在某个非常不理想的时候手动释放它。有任何想法吗?

4

1 回答 1

1

我之前对此进行了很好的了解,似乎没有任何方法可以观察对象何时被释放。我已经在弱指针类中看到了一种方法,但它涉及到 isa swizzling,这可能会让人讨厌。这是网站:http ://www.cocoadev.com/index.pl?WeakPointers

当 nib 的所有者被释放时,从 nib 文件创建的对象应该被释放,除非它们被保留在其他地方。例如,当一个 NSWindowController 被释放时,它将释放所有在加载 nib 时创建的对象。如果您的委托对象没有被释放,可能是因为它们被保留在其他地方,或者存在保留周期。

于 2009-07-28T09:20:16.913 回答