首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSApplication keyWindow在applicationDidFinishLaunching期间为零

NSApplication keyWindow在applicationDidFinishLaunching期间为零
EN

Stack Overflow用户
提问于 2015-09-06 00:42:13
回答 1查看 1.4K关注 0票数 5

从空白的OS应用程序项目开始,我将以下代码添加到applicationDidFinishLaunching中。

代码语言:javascript
复制
func applicationDidFinishLaunching(aNotification: NSNotification) {
    let app = NSApplication.sharedApplication()
    guard let window = app.keyWindow else {
        fatalError("No keyWindow\n")
    }
    print(window)
}

在启动时,我碰到了错误情况,因为我的本地window变量是零。然而,当我显示app变量的内容时,我看到了_keyWindow的一个有效值。还请注意,空白GUI窗口显示在堆栈转储旁边的屏幕上。

为什么在这种情况下keyWindow: NSWindow?属性返回零?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-06 02:36:00

NSApplicationkeyWindow属性在应用程序不活动时将是nil,因为没有一个窗口是针对键盘事件的。当它完成启动时,您不能依赖它是活动的,因为用户可能在启动时和完成启动之间激活了其他应用程序,而Cocoa的设计是为了不窃取焦点。

在某种程度上,您可能会在从Xcode启动时更多地看到这种情况,因为在这种情况下,应用程序激活有点奇怪。但是,您不能编写applicationDidFinishLaunching()方法来假设您的应用程序是活动的。

当然,您在应用程序的_keyWindow实例变量中看到的是实现细节。一个人不能确定它意味着什么,你绝对不应该依赖它。然而,我认为这基本上是应用程序的“潜在”键窗口。当应用程序被激活时,这个窗口将再次被键化(除非通过点击它的另一个窗口来激活)。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32418959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档