我以前从未见过这种响应,在同一应用程序的不同运行中,相同的操作会引发不同的错误。
我在 NSViewController 子类中有一个按钮(仅记录发送者)的 IBAction,它在单击按钮时引发错误(这是一个 OSX 应用程序)。我得到了这些(到目前为止):
-[NSArrayM buttonClick:]: unrecognized selector sent to instance
-[__NSCFDictionary buttonClick:]: unrecognized selector sent to instance
-[__NSCFSet buttonClick:]: unrecognized selector sent to instance
-[NSRunLoop buttonClick:]: unrecognized selector sent to instance
还有,可怕的 EXC_BAD_ACCESS。
此测试应用程序中唯一的代码是应用程序委托中用于实例化视图控制器的代码:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
TestController *controller = [[TestController alloc] initWithNibName:@"TestController" bundle:nil];
[self.window.contentView addSubview:controller.view];
}
而视图控制器子类中的这个 IBAction:
-(IBAction)buttonClick:(id)sender {
NSLog(@"%@",sender);
}
在视图控制器中实现的 IBAction 在 IB 中(通过文件所有者)连接到其视图中的按钮。
我不明白我怎么能在这么简单的程序中得到这么多不同的错误信息。这可能是视图控制器不在响应者链中的问题吗?如果是这样,为什么它应该抛出错误,消息不应该被发送到链上然后被丢弃?
我尝试让控制器的视图将控制器设置为下一个响应者(使用 [controller.view setNextResponder:controller];),但这只会在启动时给我 EXC_BAD_ACCESS 错误。