Objective c 窗口控制器委托错误
我使用此代码在模态视图中显示窗口控制器窗口。我在窗口控制器中为窗口中的按钮执行操作。当我点击按钮时,应用程序崩溃了,没有收到错误消息。我是否设置了代理错误Objective c 窗口控制器委托错误,objective-c,cocoa,delegates,nswindowcontroller,modal-window,Objective C,Cocoa,Delegates,Nswindowcontroller,Modal Window,我使用此代码在模态视图中显示窗口控制器窗口。我在窗口控制器中为窗口中的按钮执行操作。当我点击按钮时,应用程序崩溃了,没有收到错误消息。我是否设置了代理错误 [[NSApplication sharedApplication] beginSheet:windowObj.window modalForWindow:self.view.window modalDelegate:windowObj didEndSelector:nil contextInfo:nil]; windowObj将在工作表显
[[NSApplication sharedApplication] beginSheet:windowObj.window modalForWindow:self.view.window modalDelegate:windowObj didEndSelector:nil contextInfo:nil];
windowObj
将在工作表显示窗口之前取消分配(如果您正在使用,可能是通过ARC)。您应该为用于此操作的任何类添加一个强属性,并将windowObj设置为:
@property (strong) MyWindowController *windowObj;
...
// Instantiate the window controller
self.windowObj = [[windowController alloc] initWithWindowNibName:@"windowController"];
[[NSApplication sharedApplication] beginSheet:windowObj.window modalForWindow:self.view.window modalDelegate:windowObj didEndSelector:nil contextInfo:nil];
添加异常断点并重试。我们需要一个stacktrace来帮助…我试过了。我没有得到任何异常,它在“返回NSApplicationMain(argc,(const char**)argv);”中停止使用EXC_BAD_ACCESS(code=EXC_1386_GPFLT),您应该能够捕获该异常的根本原因……我认为我们可以使用更多与
windowObj
和view
@特洛伊木马存在相关的代码。不,我不能。这是无法修复的主要问题。问题是windowObj正在被解除分配。不需要[self.windowObj loadWindow]代码>我添加了强属性,它正在工作。谢谢。Usinf[self.windowObj loadWindow]代码>截取导致另一个问题的窗口委托。从这个角度来看,最好避免这种编码。