gpt4 book ai didi

swift - 使用自定义 NSApplication 创建时 NSWindow 未关闭

转载 作者:搜寻专家 更新时间:2023-10-31 19:37:54 25 4
gpt4 key购买 nike

我正在创建自己的 NSApplication 子类,但遇到了障碍。这是我对 run() 方法的实现。

override func run() {
finishLaunching()
repeat {

let event = nextEventMatchingMask(0xfffffffffffffff, untilDate: NSDate.distantPast(), inMode: NSDefaultRunLoopMode, dequeue: true)
if event != nil { sendEvent(event!) }
updateWindows()

} while true

}

在我的 main.swift 中我有这个:

let myApp: MyApplication = MyApplication.sharedApplication() as! MyApplication

let window = NSWindow(contentRect: NSMakeRect(0, 0, 100, 100), styleMask: NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask , backing: .Buffered, defer: false)
window.makeKeyAndOrderFront(nil)

myApp.run()

我使用 0xfffffffffffffff 而不是 Int(NSEventMask.AnyEventMask.rawValue) 的原因是后者在从 UInt64 转换为整数

问题是,当我点击红色的关闭按钮时,窗口没有关闭,当我从停靠图标菜单中选择“退出”时,它也没有退出。为什么会这样?

编辑:在 this answer. 中讨论了同样的问题。

编辑 2:我已经创建了此代码的 objective-c 版本,一切正常。我怀疑问题是我不能在 Swift 中使用 NSAnyEventMask。

最佳答案

你应该只在 self.running 时重复。这可以解释为什么您的应用程序没有退出。如果您的应用程序配置为在最后一个窗口关闭时退出,它也可以解释为什么您的窗口没有关闭。无论如何,如果整个应用程序要退出,框架可能不会费心单独关闭窗口。

关于swift - 使用自定义 NSApplication 创建时 NSWindow 未关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38252303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com