在子线程中使用runloop,正确操作NSTimer计时的注意点 三种可选方法
生活随笔
收集整理的這篇文章主要介紹了
在子线程中使用runloop,正确操作NSTimer计时的注意点 三种可选方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、第一種方法
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;
2、第二種方法
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(newThread) object:nil];
[thread start]; - (void)newThread {@autoreleasepool{[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(addTime) userInfo:nil repeats:YES];[[NSRunLoop currentRunLoop] run];}}
3、第三種方法
使用了GCD dispatch_source_t _timers; uint64_t interval = 0.01 * NSEC_PER_SEC;dispatch_queue_t queue = dispatch_queue_create("my queue", 0);_timers = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);dispatch_source_set_timer(_timers, dispatch_time(DISPATCH_TIME_NOW, 0), interval, 0);__weak ViewController *blockSelf = self;dispatch_source_set_event_handler(_timers, ^(){NSLog(@"Timer %@", [NSThread currentThread]);[blockSelf addTime];});dispatch_resume(_timers);
然后再主線程刷新 dispatch_async(dispatch_get_main_queue(), ^{
self.label.text = [NSString stringWithFormat:@"%.2f", self.timeCount/100];
}); (以上內容摘自http://www.faceye.net/search/120004.html)
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;
2、第二種方法
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(newThread) object:nil];
[thread start]; - (void)newThread {@autoreleasepool{[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(addTime) userInfo:nil repeats:YES];[[NSRunLoop currentRunLoop] run];}}
3、第三種方法
使用了GCD dispatch_source_t _timers; uint64_t interval = 0.01 * NSEC_PER_SEC;dispatch_queue_t queue = dispatch_queue_create("my queue", 0);_timers = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);dispatch_source_set_timer(_timers, dispatch_time(DISPATCH_TIME_NOW, 0), interval, 0);__weak ViewController *blockSelf = self;dispatch_source_set_event_handler(_timers, ^(){NSLog(@"Timer %@", [NSThread currentThread]);[blockSelf addTime];});dispatch_resume(_timers);
然后再主線程刷新 dispatch_async(dispatch_get_main_queue(), ^{
self.label.text = [NSString stringWithFormat:@"%.2f", self.timeCount/100];
}); (以上內容摘自http://www.faceye.net/search/120004.html)
轉載于:https://www.cnblogs.com/moonSong/p/4991028.html
總結
以上是生活随笔為你收集整理的在子线程中使用runloop,正确操作NSTimer计时的注意点 三种可选方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谨慎用药!这些药千万不能混在一起吃
- 下一篇: 关于EGE图形库在CodeBlocks下