当我打开自动发布的NSWindow
时,一切正常。只有在单击“确定”按钮后,根类才会释放NSWindow
。
但是,当我打开NSWindow
并从打开的NSWindow
中打开新的NSWindow
时,出现严重的访问错误。发生这种情况是因为第一个窗口不再被认为是活动的,并且由根类释放。
如何避免这个问题?
最佳答案
一个简单的答案:不要这样做,您要依靠未定义的行为并要求崩溃。您应该对窗口保持强烈的引用,只有在使用完窗口后才能释放它。
通常,应使用NSWindowController
来管理打开的每个窗口。 NSWindowController
包含对窗口的引用,您可以轻松调用showWindow:
的close:
和NSWindowController
方法来管理窗口显示。
从您的问题看来,您正在使用NSWindow
对象作为窗口控制器。这不是应该使用NSWindow
的方式。使用NSWindowController
代替,这就是它的作用。
关于objective-c - 避免自动释放正在打开另一个NSWindow的NSWindow?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9722182/