单击按钮时应用程序崩溃

时间:2013-07-23 21:09:24

标签: macos

我来自iOS开发背景。我正在appdelegate中创建简单的mac应用程序我正在向窗口添加NSViewController实例,我在NSViewController类中有一个按钮。当我点击按钮时它会崩溃。我查看了这些帖子,但我无法弄清楚我的应用程序中有什么问题。 Why would my app not be able to "attach" an action?

以下是app delegate中的代码

PrViewController *pcVC = [[PrViewController alloc] initWithNibName:@"PrViewController" bundle:nil];
[self.window.contentView addSubview:pcVC.view];

按钮功能

    -(IBAction)startClicked:(id)sender{NSLog@"Btn selected";}

当我点击按钮时,应用程序崩溃了。 以下是堆栈跟踪:

Producer_consumer[45914:303] -[__NSCFType startClicked:]: unrecognized selector sent to instance 0x101d07680
 Producer_consumer[45914:303] -[__NSCFType startClicked:]: unrecognized selector sent to instance 0x101d07680
Producer_consumer[45914:303] (
0   CoreFoundation                      0x00007fff900deb06 __exceptionPreprocess + 198
1   libobjc.A.dylib                     0x00007fff8ce803f0 objc_exception_throw + 43
2   CoreFoundation                      0x00007fff9017540a -[NSObject(NSObject) doesNotRecognizeSelector:] + 186
3   CoreFoundation                      0x00007fff900cd02e ___forwarding___ + 414
4   CoreFoundation                      0x00007fff900cce18 _CF_forwarding_prep_0 + 232
5   AppKit                              0x00007fff85862959 -[NSApplication sendAction:to:from:] + 342
6   AppKit                              0x00007fff858627b7 -[NSControl sendAction:to:] + 85
7   AppKit                              0x00007fff858626eb -[NSCell _sendActionFrom:] + 138
8   AppKit                              0x00007fff85860bd3 -[NSCell trackMouse:inRect:ofView:untilMouseUp:] + 1855
9   AppKit                              0x00007fff85860421 -[NSButtonCell trackMouse:inRect:ofView:untilMouseUp:] + 504
10  AppKit                              0x00007fff8585fb9c -[NSControl mouseDown:] + 820
11  AppKit                              0x00007fff8585750e -[NSWindow sendEvent:] + 6853
12  AppKit                              0x00007fff85853644 -[NSApplication sendEvent:] + 5761
13  AppKit                              0x00007fff8576921a -[NSApplication run] + 636
14  AppKit                              0x00007fff8570dbd6 NSApplicationMain + 869
15  Producer_consumer                   0x0000000100001c02 main + 34
16  libdyld.dylib                       0x00007fff920127e1 start + 0

任何帮助都会受到赞赏 感谢

2 个答案:

答案 0 :(得分:6)

我认为视图控制器过早被释放,因为你没有持有它的引用:

PrViewController *pcVC = [[PrViewController alloc] initWithNibName:@"PrViewController" bundle:nil];
[self.window.contentView addSubview:pcVC.view];

你需要使用视图使pcVC成为该类的实例变量,或者更好地仍然动摇你的iOS背景并完全停止使用视图控制器,而是直接从NIB加载视图。

article给了我关于内存管理相关的想法。

答案 1 :(得分:0)

在Interface Builder中打开您的控制器并查看其操作(右键单击橙色圆圈)。看起来你有一个破碎的动作链接。这可能是操作重命名,删除然后再添加方法的结果。