2013-07-23 138 views
2

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

这里是按钮

-(IBAction)startClicked:(id)sender{[email protected]"Btn selected";} 

当我按一下按钮,应用程序崩溃的应用程序委托

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

函数的代码。 以下是堆栈跟踪:

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 

任何帮助将感激 感谢

+1

什么是错误?什么线路崩溃。 – utahwithak

+0

什么是堆栈跟踪呢? – BergQuester

+0

当我点击按钮时它崩溃。 – pa12

回答

6

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

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

您需要使用视图使pcVC的类的实例变量或者更好的是动摇你的iOS背景并完全停止使用视图控制器,以支持从NIB直接加载视图。

这个article给了我关于它与内存管理有关的想法。

+0

谢谢。像魅力一样工作。不知道我是如何错过这个基本的。 – pa12

0

在Interface Builder打开控制器并查看其行动(右键点击橙色圆圈)。看起来您的行动链接已损坏。这可能是操作重命名,或删除然后再添加方法的结果。

+0

我检查它,但行动似乎是完好的。 – pa12

相关问题