【问题标题】:Pausing the execution of main thread until NSWindow closed暂停主线程的执行,直到 NSWindow 关闭
【发布时间】:2014-07-02 02:19:27
【问题描述】:

我是objective-c的新手。我想暂停主线程的执行,直到我的应用程序keyWindow被关闭。我已经尝试过以下代码

[mywindow performSelector:@selector(isVisible:) onThread:[NSThread currentThread] withObject:self waitUntilDone:YES];

它暂停执行。关闭 mywindow 后主线程不执行(在同一行暂停)。我该怎么做?

【问题讨论】:

  • 请不要以任何理由阻塞主线程。你的代码没有意义
  • 但这对我的应用程序来说是必须的。
  • 为什么不退出当前动作,等主窗口关闭后再执行。

标签: objective-c grand-central-dispatch nsthread nsobject performselector


【解决方案1】:

这是不可能的;这是一个悖论:负责关闭窗口的代码必须发生在主线程上(因为它是 AppKit/UI 代码)。如果你阻塞了等待窗口关闭的主线程,那么窗口永远无法关闭,因为主线程被阻塞了。任何在窗口逻辑关闭之前阻塞主线程的尝试都会导致死锁。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多