在编写应用程序时,我遇到了一些我没有预料到的奇怪行为,并将其提炼为以下内容:
我做了一个应用程序,其主要功能如下。在活动监视器中观察它时,它使用一个线程。
int main(int argc, const char * argv[])
{
@autoreleasepool
{
while (YES)
{
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode
beforeDate:[NSDate distantFuture]];
}
}
return 0;
}
如果我更改[NSDate distantFuture]
为[NSDate dateWithTimeIntervalSinceNow:1.0]
,则该应用程序使用 ~3 个线程。在检查了一下之后,似乎 adispatch_queue
已代表我隐式创建,这反过来又创建了一个线程池。
只是好奇:为什么会发生这种情况?怎么样[NSDate dateWithTimeIntervalSinceNow:1.0]
导致运行循环创建一个dispatch_queue
?