gpt4 book ai didi

cocoa - 运行 NSRunLoop 导致主线程挂起

转载 作者:行者123 更新时间:2023-12-03 17:09:07 26 4
gpt4 key购买 nike

在 Cocoa 应用程序中,运行如下代码:

NSDate* date = [NSDate dateWithTimeIntervalSinceNow:30.0];
while (date.timeIntervalSinceNow > 0) {
[NSRunLoop.currentRunLoop runMode:NSDefaultRunLoopMode beforeDate:date];
}
主线程上的

似乎会导致主线程挂起 30 秒。我觉得这很令人惊讶,因为我本以为代码基本上会充当消息泵并允许实际处理用户界面事件。人们可以提供什么解释来解释为什么这会导致主线程挂起?

最佳答案

主 Cocoa 应用程序事件循环构建在运行循环之上,但它不仅仅是运行循环输入源。

如果你想要一个消息泵,你应该使用 -nextEventMatchingMask:...-sendEvent: NSApplication的方法或NSWindow .

但是,您真正想要实现什么目标?为什么要尝试运行事件循环 30 秒?你能用计时器或 dispatch_after() 来实现你想要的吗? ?

关于cocoa - 运行 NSRunLoop 导致主线程挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51864565/

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