在OSX上更改AppDelegate类

时间:2014-11-16 15:10:25

标签: objective-c macos cocoa appdelegate

我在OSX上有一个可可项目。为此,我不得不改变Appdelegate的类。 我分两步完成了这个步骤:首先我实现了新的appdelegate类(我还没有实现NSApplicationDelegate协议)并检查它是否工作和编译。在新课程中,我已经实现了applicationDidFinishLaunching方法。一切都很好!

之后我改变了协议实现。我从旧的Appdelegate中删除了prorocol并将其插入新的appdelegate中。即使在这一步之后,一切似乎都很好!应用程序编译并按预期工作。但由于我有点怀疑,我在新旧类中插入了日志语句。

插入后,我不得不看,该应用程序仍然使用旧的appdelegate! 显然,有一些东西仍旧知道旧appdelegate的名称!但那是哪里?或者我是否必须做其他事情来实现我的目标?有谁知道我要做什么?

1 个答案:

答案 0 :(得分:0)

必须要发生两件事:1)必须实例化新类的实例。 2)该实例需要分配给应用程序对象的delegate属性(NSApplication的实例或子类)。

在典型的Mac应用中,这两件事都是在MainMenu NIB中完成的。该NIB包含适当类的冻干实例。如果你是从头开始构建NIB,你可以拖动一个" Object" (蓝色立方体)从Object库到NIB文档。默认情况下,这将表示NSObject的实例。然后,您可以选择它并打开Identity检查器,将其类更改为新的应用程序委托类。由于您没有从头开始构建NIB,因此NIB中已经有了一个Object。您可以选择它并更改其类别。

将其分配给应用程序对象的delegate属性的另一步是通过将NIB中应用程序对象的占位符的delegate出口连接到对象来完成的。同样,既然你没有从头开始构建NIB,那已经完成了。

因此,总而言之,您只需要在MainMenu NIB中更改app委托对象的类。


更新:这是您需要更改内容的屏幕截图:

enter image description here