我的模式对话框崩溃了(Cocoa)
如果我在 windowWillClose:
中有释放的代码,下面的代码就会崩溃 我的 MyWindowController,否则它工作正常。
我在 Mac OS 10.6.8 上测试过。 我正在使用 XCode 3.1.3。
我做错了什么?
在我释放 MyWindowController 之前,窗口似乎没有被处理掉, 因为它在 NSTableView
方法中崩溃。
我的按钮处理程序调用 [NSApp stopModalWithCode:0];
MyDialog()
{
MyWindowController* controller = [[MyWindowController alloc] init];
[controller showWindow:controller];
NSWindow* window = [controller window];
[NSApp runModalForWindow:window];
[window close];
}
在我的 MyWindowController 中:
- (void)windowWillClose:(NSNotification*)notification
{
[self autorelease];
}
My code below crashes if I have the code in windowWillClose:
that releases
my MyWindowController, otherwise it works fine.
I test it on Mac OS 10.6.8.
I am using XCode 3.1.3.
What have I done wrong?
It seems like the window is not disposed of before I release MyWindowController,
because it crashes in a NSTableView
method.
My button handler calls [NSApp stopModalWithCode:0];
MyDialog()
{
MyWindowController* controller = [[MyWindowController alloc] init];
[controller showWindow:controller];
NSWindow* window = [controller window];
[NSApp runModalForWindow:window];
[window close];
}
In my MyWindowController:
- (void)windowWillClose:(NSNotification*)notification
{
[self autorelease];
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您正在 windowWillClose 中释放“自我” - 这似乎是错误的。
当然类似的事情应该在 dealloc 中完成吗?
另外,在最初分配控制器时,您可能会更好地自动释放控制器?
You are releasing 'self' in windowWillClose - that seems wrong.
Surely anything like that should be done in dealloc?
Also, you might be better autoreleasing controller when it is initially alloc'd?