无法连接操作:到 NSApplication 类的目标
Posted
技术标签:
【中文标题】无法连接操作:到 NSApplication 类的目标【英文标题】:Could not connect the action: to target of class NSApplication 【发布时间】:2011-07-19 02:12:56 【问题描述】:我在编译时不断收到Could not connect the action startServer: to target of class NSApplication
错误。我了解错误是什么,但不确定如何解决。不知何故,我的 xib 试图在不存在的 NSApplication 中调用 startServer 方法。
【问题讨论】:
【参考方案1】:听起来好像您将 UI 元素连接到 File's Owner 对象,它是 NSApplication 的一个实例。
如果您还没有这样做,您希望将一个 NSObject 从 Xcode 4 中的 Object Library 调色板拖到布局左侧的边缘。完成并选择它后,选择身份检查器,然后在“类”字段中输入“WindowController”。
现在您已经获得了 WindowController 的表示,正如您所说,它包含 startServer:,那么您可以将您的 UI 元素连接到它。确保您的 startServer 方法采用以下形式:
- (IBAction)startServer:(id)sender
否则您将无法建立连接。
祝你工作顺利。
【讨论】:
我遗漏了(id)发件人,将其添加到修复中。在 ios 中,方法中是否没有参数无关紧要;为什么它在 Cocoa 中很重要?【参考方案2】:您可以通过两种简单的方法解决此问题:
[[YourWindowController alloc]initWithWindowNibName:XIB_YOUR_WINDOW_CONTROLLER];
这里不要与所有者一起创建。所以NSApplication
不会是所有者。
[[YourWindowController alloc]init];
并在YourWindowController.m
文件中覆盖init 方法并调用self = [super initWithWindowNibName:XIB_YOUR_WINDOW_CONTROLLER];
1 或 2 都可以解决这个问题。
快乐编码....
【讨论】:
完美...我不知道我错过了这个。这为我解决了。【参考方案3】:我遇到了同样的问题,但终于解决了。我不确定这是否适合你,但试试这个:
(在界面生成器上)
从库中,将一个 NSObject 拖到您的 XIB 文档窗口中。 通过将它们连接到 NSObject 来断开已连接到文件所有者的对象。 将 NSObject 重命名为合适的名称。 突出显示 NSObject,转到 Inspector。 在 Class Identity 下,搜索刚刚重命名的 NSObject 的名称。 保存!
看看它是否适合你!它现在让我的工作了!祝你好运!
【讨论】:
谢谢。点赞。我不明白为什么 OSX 与使用 NSObject 的 iOS 开发如此不同?【参考方案4】:您已在主 nib 中与文件所有者建立了连接,您可能打算连接到其他东西。你在哪个类中实现了-startServer:
?
【讨论】:
startServer 在我的 WindowController.m 中以上是关于无法连接操作:到 NSApplication 类的目标的主要内容,如果未能解决你的问题,请参考以下文章
从 xcode 创建一个“命令行工具”项目,然后设置并运行 NSApplication。此应用程序中的光标无法更改
在 PyObjC 中为 openFile 实现 NSApplication 委托协议
Cocoa:将 NSApplication 集成到现有的 c++ 主循环中