NSRunLoop 和 CFRunLoop 中有方法,要运行到特定时间 CFRunLoopInMode 和 NSRunLoop - runUntillDateT
这些方法指定运行的时间,直到。
但是,我想处理 runLoop 中的所有消息,如果它完成并且空闲则退出。因为一些 runLoop 源可以有无限的时间来处理。所以,我不能说时间。
NSRunLoop 和 CFRunLoop 中有方法,要运行到特定时间 CFRunLoopInMode 和 NSRunLoop - runUntillDateT
这些方法指定运行的时间,直到。
但是,我想处理 runLoop 中的所有消息,如果它完成并且空闲则退出。因为一些 runLoop 源可以有无限的时间来处理。所以,我不能说时间。
您可以使用CFRunLoopRunInMode
一次来运行事件循环,它会告诉您它是否处理了任何源。所以你可以尝试这样的事情:
while (CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, 1) == kCFRunLoopRunHandledSource) {
// nothing
}
您可以尝试的另一种方法是CFRunLoopObserver
使用. 这个观察者将在运行循环进入睡眠等待源或计时器触发之前被调用。在观察者的标注中,您可以简单地调用.activities
kCFRunLoopBeforeWaiting
CFRunLoopStop(CFRunLoopGetCurrent())