优化定时器NSTimer

时间:2022-11-04 00:06:42
参考文档:http://www.cnblogs.com/junhuawang/p/4647559.html   - (void)viewDidLoad { [super viewDidLoad];   dispatch_queue_t queue = dispatch_queue_create("kk", DISPATCH_QUEUE_SERIAL);   // 串行队列中执行异步任务 dispatch_async(queue, ^{   // 在子线程中使用定时器   /*************************************************************/   /*   // 第一种方式   // 此种方式创建的timer已经添加至runloop中 [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(doSomething) userInfo:nil repeats:NO];   // 在线程中使用定时器,如果不启动run loop,timer的事件是不会响应的,而子线程中runloop默认没有启动 // 让线程执行一个周期性的任务,如果不启动run loop, 线程跑完就可能被系统释放了 [[NSRunLoop currentRunLoop] run];// 如果没有这句,doSomething将不会执行!!!   */   /*************************************************************/       /*************************************************************/   // 第二种方式 NSTimer *timer = [NSTimer timerWithTimeInterval:2.0 target:self selector:@selector(doAnything) userInfo:nil repeats:NO];   // 将定时器添加到runloop中 [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];   // 在线程中使用定时器,如果不启动run loop,timer的事件是不会响应的,而子线程中runloop默认没有启动 // 让线程执行一个周期性的任务,如果不启动run loop, 线程跑完就可能被系统释放了 [[NSRunLoop currentRunLoop] run];// 如果没有这句,doAnything将不会执行!!!   /*************************************************************/   NSLog(@"子线程结束");   }); }   - (void)doSomething{   NSLog(@"doSomething..."); }   - (void)doAnything{   NSLog(@"doAnything..."); }