【问题标题】:Close a window without waiting for NotificationCenter post to complete Cocoa Swift关闭窗口而不等待 NotificationCenter 帖子完成 Cocoa Swift
【发布时间】:2021-07-30 10:52:38
【问题描述】:

就在致电self.window?.close() 之前,我正在使用NotificationCenter.default.post(name: Notification.Name("frameCaptured"), object: nil) 发布通知。通知的选择器可能需要一些时间才能完成。所以即使选择器不完整,我也想关闭窗口。这是可能的还是我应该以另一种方式处理?

【问题讨论】:

  • 如果选择器需要更多时间,您可以启动 Timer 在 3 或 5 秒后执行 self.window?.close()

标签: swift cocoa nsnotificationcenter


【解决方案1】:

由于close() 必须在主线程上运行,您需要做的就是排队一个块以便在不久的将来发布通知:

    DispatchQueue.main.async {
        NotificationCenter.default.post(name: Notification.Name("MyNotification"), object: self);
    }
    self.window?.close()

通知代码将在未来的某个主循环中执行。在当前主循环上的所有代码都完成之前,它无法启动,但会在所有挂起的主循环事件都赶上后立即运行,这很可能是紧随其后。

【讨论】:

    猜你喜欢
    • 2018-04-12
    • 1970-01-01
    • 2016-06-23
    • 2015-09-30
    • 1970-01-01
    • 2021-09-07
    • 2021-05-18
    • 2021-07-17
    • 1970-01-01
    相关资源
    最近更新 更多