我在OSX上有一个可可项目。为此,我不得不改变Appdelegate的类。
我分两步完成了这个步骤:首先我实现了新的appdelegate类(我还没有实现NSApplicationDelegate
协议)并检查它是否工作和编译。在新课程中,我已经实现了applicationDidFinishLaunching
方法。一切都很好!
之后我改变了协议实现。我从旧的Appdelegate中删除了prorocol并将其插入新的appdelegate中。即使在这一步之后,一切似乎都很好!应用程序编译并按预期工作。但由于我有点怀疑,我在新旧类中插入了日志语句。
插入后,我不得不看,该应用程序仍然使用旧的appdelegate! 显然,有一些东西仍旧知道旧appdelegate的名称!但那是哪里?或者我是否必须做其他事情来实现我的目标?有谁知道我要做什么?
答案 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委托对象的类。
更新:这是您需要更改内容的屏幕截图: