NSApplication
的自定义子类来创建 NSApplication.shared
返回的应用程序实例。
class Application: NSApplication {
// My own methods
}
我将
Principal class
中的Info.plist
从NSApplication
设置为Application
,也按照答案的建议设置为
$(PRODUCT_MODULE_NAME).Application
。这有效,我的子类在正常的应用程序模板中正确实例化,除了我的子类的定义和更改Principal class
之外没有任何修改。这可以使用 print(NSApp as? Application)
进行验证,结果不是 nil
。
但是,如果我删除
.xib
/.storyboard
文件,请将 AppDelegate.swift
替换为仅包含以下内容的 main.swift
:
import Cocoa
class Application: NSApplication, NSApplicationDelegate {
func applicationShouldTerminateAfterLastWindowClosed(_ _: NSApplication) -> Bool {
return true
}
}
NSApplication.shared.delegate = (NSApp as! Application)
NSApp.run()
然后
as!
向下转换将失败,这意味着由 NSApplication.shared
实例化的应用程序对象不是我的自定义类 即使我将主体类设置为之前工作的相同字符串,但现在似乎完全被忽略了。
我怀疑带有
@NSApplicationMain
注释的委托并加载 .xib
文件的正常/默认进程以某种方式注册 Principal class
用于实例化 shared
应用程序实例,但以我的方式直接使用 NSApplication.shared
指定跳过。
在这种特殊情况下,如何为我的应用程序对象使用自定义类?