cod*_*001 1 macos objective-c nsrunloop
NSRunLoop和CFRunLoop中有方法,运行到特定时间CFRunLoopInMode和NSRunLoop - runUntillDateT
这些方法指定运行的时间.
但是,我想在runLoop中处理所有消息,如果完成并且空闲则退出.因为某些runLoop源可以无限期地处理.所以,我不能提及时间.
您可以使用CFRunLoopRunInMode一次运行事件循环,它会告诉您它是否处理了任何来源.所以你可以尝试这样的事情:
while (CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, 1) == kCFRunLoopRunHandledSource) {
// nothing
}
Run Code Online (Sandbox Code Playgroud)
你可以尝试的另一种方法是CFRunLoopObserver使用activities参数创建一个kCFRunLoopBeforeWaiting.在运行循环进入休眠状态之前,将调用此观察器,等待源或计时器触发.在观察者的标注中,您可以简单地调用CFRunLoopStop(CFRunLoopGetCurrent()).