怎么实现一个精准的Timer?
我写了如下的代码进行测试。
1. 在主线程中。
NSTimer *tiemer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(output) userInfo:nil repeats:YES]; - (void) output{ NSLog(@"-------------"); }
发现间隔时间大概在正负5毫秒之间徘徊。
就像这样:
2013-05-02 16:25:32.550 TestDemoArc[21139:907] -------------
2013-05-02 16:25:33.549 TestDemoArc[21139:907] -------------
2013-05-02 16:25:34.554 TestDemoArc[21139:907] -------------
2013-05-02 16:25:35.555 TestDemoArc[21139:907] -------------
如果在主线程中做一些操作,比如:
int j = 0; for (int i = 0; i<100000000; i++) { j = j+i; }
时间间隔会变为两秒。
就像这样:
2013-05-02 16:38:32.437 TestDemoArc[21207:907] -------------
2013-05-02 16:38:34.437 TestDemoArc[21207:907] -------------
2013-05-02 16:38:36.437 TestDemoArc[21207:907] -------------
2013-05-02 16:38:38.439 TestDemoArc[21207:907] -------------
2013-05-02 16:38:40.437 TestDemoArc[21207:907] -------------
当然,用block放到子线程里就只有1毫秒左右的偏差了。
现在想问怎么做一个Timer,保证有在1毫秒以下的偏差。
绝地无双
郎朗坤
相关分类