NSTextView不会dealloc,直到鼠标移动(摧毁撤消堆栈?)

时间:2013-07-03 12:09:57

标签: macos cocoa nstextview

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

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

由于

1 个答案:

答案 0 :(得分:0)

仍然不知道为什么延迟NSTextView释放 - 但事实证明这是一个红鲱鱼。我的撤销堆栈被删除的原因是因为我在我的textDidChange回调中销毁了我的NSTextView(尽管有一个retain / autorelease来推迟实际的dealloc。)

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

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