0

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

有点晦涩 - 但如果有人对此有任何了解,我很乐意听取您的意见!

谢谢

4

1 回答 1

0

仍然不知道为什么 NSTextView 释放被推迟 - 但事实证明这是一个红鲱鱼。我的撤消堆栈被破坏的原因是因为我在我的 textDidChange 回调中破坏了我的 NSTextView(尽管使用保留/自动释放来推迟实际的释放。)

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

现在有道理了,我找到了原因……不是吗?

于 2013-11-22T15:53:18.503 回答