【问题标题】:applicationDidFinishLaunching not invoked未调用 applicationDidFinishLaunching
【发布时间】:2011-12-16 19:26:24
【问题描述】:

在我的 appdelegate.m 中,没有调用 applicationDidFinishLaunching。 我已经读到这是因为我的“应用程序”的代表没有正确连接,但我不知道如何连接它。我所做的是右键单击 XIB 文件中的应用程序,然后将委托出口拖到某处......但不知道在哪里。 任何帮助表示赞赏。 谢谢 !

【问题讨论】:

    标签: xcode macos cocoa interface-builder


    【解决方案1】:

    在您的 MainMenu.xib 中,确保有一个 AppDelegate 类的实例。要制作一个,将一个普通对象(蓝色立方体)拖到列表中,并将其类名设置为 AppDelegate(或您的应用程序委托类名)。

    同样在 MainMenu.xib 中,要连接它,将连接从 Application 对象拖到您的 AppDelegate 实例(蓝色立方体)并将其连接到委托出口。

    完成。

    【讨论】:

    • 您为我节省了很多时间,谢谢!除此之外,我还必须将其链接到文件所有者。
    • 概念上的飞跃是理解 nib/xib 是冻干对象的 实例 的集合。在一个正在运行的应用程序中,通常只有一个主要的架构元素,比如你的 NSApp 实例及其委托。文档控制器/视图程序集是一个明显的例外,但即便如此,一个单独的“文档”原型 xib 包含一个表示文档实例、主窗口等的对象。但是,您不包含模型的预烘焙实例xib 中的对象(如 Person),因为这是可变的(通常没有一个 Person)。关键概念。 :-)
    • 谢谢!我已经花了一天的时间试图弄清楚为什么我的登录助手突然停止工作。我不小心删除了,后来创建了一个新的 MainMenu.xib
    • 在 Xcode 6 中(之前没有测试过),似乎只需要链接文件所有者,而不是应用程序对象。
    • 文件的所有者确实是 MainMenu.nib 文件中的应用程序。
    【解决方案2】:

    如果您已更新到 Swift 3,可以尝试以下方法:

    查看您的“AppDelegate.swift”并确保相关行如下所示:

    func applicationDidFinishLaunching(_ aNotification: Notification) {
    

    与此相反:

    func applicationDidFinishLaunching(_ aNotification: NSNotification) {
    

    我刚刚更新了一个应用程序,并没有想到要检查。结果是我的应用程序启动了,但从未调用过相关方法。显然,您应该检查您拥有的其他接受 Notification 对象的函数。

    【讨论】:

    • 谢谢,这解决了我的问题,来自 Swift 2 应用程序。
    • 我发现我还必须做一个产品>清洁
    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 2018-04-29
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多