当我打开自动发布的NSWindow时,一切正常。只有在单击“确定”按钮后,根类才会释放NSWindow

但是,当我打开NSWindow并从打开的NSWindow中打开新的NSWindow时,出现严重的访问错误。发生这种情况是因为第一个窗口不再被认为是活动的,并且由根类释放。

如何避免这个问题?

最佳答案

一个简单的答案:不要这样做,您要依靠未定义的行为并要求崩溃。您应该对窗口保持强烈的引用,只有在使用完窗口后才能释放它。

通常,应使用NSWindowController来管理打开的每个窗口。 NSWindowController包含对窗口的引用,您可以轻松调用showWindow:close:NSWindowController方法来管理窗口显示。

从您的问题看来,您正在使用NSWindow对象作为窗口控制器。这不是应该使用NSWindow的方式。使用NSWindowController代替,这就是它的作用。

关于objective-c - 避免自动释放正在打开另一个NSWindow的NSWindow?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9722182/

10-11 21:50