2

我来自 iOS 开发背景。我正在 appdelegate 中创建简单的 mac 应用程序我正在将 NSViewController 实例添加到窗口中,并且我在 NSViewController 类中有一个按钮。当我单击按钮时,它崩溃了。我查看了这些帖子,但无法弄清楚我的应用程序出了什么问题。 为什么我的应用不能“附加”一个动作?

这是应用程序委托中的代码

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

)

任何帮助将不胜感激谢谢

4

2 回答 2

6

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

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

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

这篇文章给了我关于它与内存管理相关的想法。

于 2013-07-24T05:46:34.817 回答
0

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

于 2013-07-24T05:39:49.337 回答