NSRunLoop之入门理解(一)

1 当有一个定时器控制UI的时候,同时操作其他UI而不能影响这个定时器的时候的处理方案

NSRunLoopMode一般分成5种而常用的却只有三种:NSDefaultRunLoopMode(默认模式),NSRunLoopCommonModes(组合模式),UITrackingRunLoopMode(UI事件模式)
而NSRunLoopCommonModes = NSDefaultRunLoopMode+UITrackingRunLoopMode
通常NSRunLoop默认是NSDefaultRunLoopMode模式,这个时候当有UI事件处理的时候当前的Runloop会优先处理UI事件当UI事件处理完毕才会触发NSDefaultRunLoopMode模式的事件,所以我们会把定时器放在Runloop的组合模式下,这样就不会受到其他UI的事件影响。

 // 初始化定时器
 NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(testTimer) userInfo:nil repeats:YES];
// 将定时器添加到RunLoop
[[NSRunLoop currentRunLoop] addTimer:timer forMode:UITrackingRunLoopMode];

2 如果是用定时器处理其他的耗时事件-可以放在其他线程的

你可能感兴趣的:(NSRunLoop之入门理解(一))