Runloop底层整理

2020-06-09  本文已影响0人  化二缺

定义

应用范畴

  • 定时器, PerformSelector
  • GCD
  • 事件相应,手势识别,界面刷新
  • 网络强求
  • 自动释放池

RunLoop对象

iOS中有2套API 来访问和使用RunLoop

RunLoop对象 和线程的关系

RunLoop相关类

  • CFRunLoopRef
  • CFRunLoopModeRef
  • CFRunLoopSourceRef
  • CFRunLoopTimerRef
  • CFRunLoopObserverRef


    image.png
image.png image.png

CFRunLoopModeRef

image.png

RunLoop状态

image.png

添加Observer监听 RunLoop的所有状态

image.png image.png

RunLoop的应用

  • 控制线程声明周期(线程保活)
  • 解决NSTimer在滑动时停止工作的问题
  • 监听应用卡顿
  • 性能优化
解决NSTimer在滑动时停止工作的问题
 static int count  = 0 ;
    NSTimer * timer = [NSTimer timerWithTimeInterval:1 repeats:YES block:^(NSTimer * _Nonnull timer) {
       NSLog(@"%d",++count);
    }];
    //NSRunLoopCommonModes 通用模式
    //并不是一个真的模式 只是一个标记
    //timer 在设置了Common标记的模式下都能运行
    [[NSRunLoop currentRunLoop ]addTimer:timer forMode:NSRunLoopCommonModes];
上一篇 下一篇

猜你喜欢

热点阅读