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];
网友评论