1

NSTimer の使用に問題があり、コードは次のとおりです。コードを簡略化しました。

- (void) mainThreadFun
{
    [NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(test) userInfo:nil repeats:YES];

    dispatch_async(dispatch_get_global_queue(0, 0), ^{
           [NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(test1) userInfo:nil repeats:YES];
    });

}

mainThread の NSTimer は機能するが、別のスレッドの NSTimer は機能しないことがわかりました。これはなぜ起こり、どうすれば修正できますか?

4

1 に答える 1

5

GCD キューでNSTimerを使用することはできません。NSTimer の動作にはNSRunLoopが必要ですが、GCD キューには NSRunLoop がありません。

GCD キューでタイマー機能が必要な場合dispatch_after()は、ワンショット タイマーを使用するか、タイマーを繰り返すためのdispatch_sourceを使用する必要があります。

于 2012-05-30T03:07:22.357 に答える