アプリを書いているときに、予期していなかった奇妙な動作に遭遇し、それを次のように要約しました。
主な機能が以下のアプリを作りました。Activity Monitorで監視している間、1つのスレッドを使用します。
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つのスレッドを使用します。これを少し調べたところdispatch_queue
、私に代わって暗黙的にaが作成され、スレッドプールが作成されたようです。
ただ好奇心が強い:なぜこれが起こるのですか?[NSDate dateWithTimeIntervalSinceNow:1.0]
実行ループで?を作成するのはどうdispatch_queue
ですか?