NSTextView 在鼠标移动之前不会解除分配(垃圾撤消堆栈?



我有一个NSTextView,我在窗口的内容视图中以编程方式创建它。在某些情况下,我需要以编程方式终止编辑并销毁NSTextView。当我这样做时(通过将第一个响应程序设置为nil,removeFromSuperview并释放指针),NSTextView上的dealloc不会被调用,直到我将鼠标移到窗口内容视图之外。就好像窗口正在缓存对NSTextView的引用,只有当它决定我不再与窗口交互时才释放它。这不会是一个问题,除非这会打乱相关联的textContainer的撤消分组。

有点晦涩难懂,但如果有人知道这件事,我很想听听你的意见!

感谢

仍然不知道为什么NSTextView解除分配被推迟,但事实证明这只是转移注意力。我的撤消堆栈被破坏的原因是我在textDidChange回调中破坏了我的NSTextView(尽管使用了retain/autorelease来推迟实际的dealloc)

如果我通过performSelector:withObject:afterDelay从我的textDidChange调用destroyTextView:代码来推迟它,那么一切都很好(使用撤消堆栈)

这很有道理,现在我找到了原因。。。不是总是这样吗?

最新更新