我阅读了有关“Run Loops”主题的“IOS Developer Library”,在文章中,有一句话说“可以递归运行run loop”。我的问题是在哪种情况下应该使用递归运行循环?
我的另一个问题是关于“运行循环的目的是在有工作要做时让你的线程保持忙碌,并在没有工作时让你的线程进入睡眠状态。”这句话。一个run loop怎么能休眠,没有事件来的时候主线程的run loop能休眠吗?第二个线程的情况如何?
我从 Internet 上找到的嵌套运行循环的一个示例如下所示:
[NSThread detachNewThreadSelector:@selector(runOnNewThread) toTarget:self withObject:nil];
while (!end) {
NSLog(@”runloop…”);
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
NSLog(@”runloop end.”);
}
当前线程将被阻塞,直到另一个线程中的工作完成。但是为什么会出现这种情况,当前线程怎么会被阻塞呢?
谁能回答我的问题?