iOS:runloop

2020-11-14  本文已影响0人  Liu____

CFRunloop 优化TableView加载高清大图UI卡顿问题。单独分批加载

https://cloud.tencent.com/developer/article/1383376

https://www.jianshu.com/p/d260d18dd551

runloopmode

总共是有五种CFRunLoopMode:

kCFRunLoopDefaultMode:默认模式,主线程是在这个运行模式下运行
UITrackingRunLoopMode:跟踪用户交互事件(用于 ScrollView 追踪触摸滑动,保证界面滑动时不受其他Mode影响)
kCFRunLoopCommonModes:伪模式,(kCFRunLoopDefaultMode,UITrackingRunLoopMode的合集)
UIInitializationRunLoopMode:在刚启动App时第进入的第一个 Mode,启动完成后就不再使用
GSEventReceiveRunLoopMode:接受系统内部事件,通常用不到


runloop理解

1,runloop为死循环
2,主线程在main函数开启
3,UITableView滚动加载图片优化

[cell performSelector:@selector(setImage:) withObject:nil afterDelay:0.1 inModes:@[NSDefaultRunLoopMode]];

4,定时器

 NSTimer *timer = [NSTimerscheduledTimerWithTimeInterval:.2target:selfselector:@selector(timerDone) userInfo:nilrepeats:YES];
    [[NSRunLoopcurrentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

5,子线程需要开启runloop

 NSTimer *timer = [NSTimerscheduledTimerWithTimeInterval:.2target:selfselector:@selector(timerDone) userInfo:nilrepeats:YES];
  [[NSRunLoopcurrentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

   [[NSRunLoop currentRunLoop] run];

6,关闭runloop

        self.runLoop = CFRunLoopGetCurrent();
      [[NSRunLoop currentRunLoop] run];
     // 关闭runloop
      CFRunLoopStop(self.runLoop);// 关闭保持前后一致
上一篇下一篇

猜你喜欢

热点阅读