RunLoop 细节总结

1、主线程RunLoop,一般情况运行在 NSDefaultRunLoopMode 模式下,在滑动Scrollview 时候运行在UITrackingRunLoopMode 模式下。[runLoop addTimer:timer forMode:NSRunLoopCommonModes] ,NSTimer 添加到NSRunLoopCommonModes ,才能在上面的两种情况下都执行定时方法。2、RunLoop有三种启动方式- (void)run;- (void)runUntilDate...
摘要由CSDN通过智能技术生成

1、主线程RunLoop,一般情况运行在 NSDefaultRunLoopMode 模式下,在滑动Scrollview 时候运行在 UITrackingRunLoopMode 模式下。 [runLoop addTimer:timer forMode:NSRunLoopCommonModes] ,NSTimer 添加到 NSRunLoopCommonModes ,才能在上面的两种情况下都执行定时方法。

2、RunLoop有三种启动方式

- (void)run; 

- (void)runUntilDate:(NSDate *)limitDate;

- (BOOL)runMode:(NSRunLoopMode)mode beforeDate:(NSDate *)limitDate;

  • 第一种无条件永久运行 RunLoop 并且无法停止,线程永远存在。NSDefaultRunLoopMode 模式下运行。
  • 第二种会在到到达 limitDate 后退出 RunLoop,同样无法主动停止RunLoop。NSDefaultRunLoopMode 模式下运行。
  • 第三种可以选定运行模式,并且在到达 limitDate 后  或者  触发了非Timer的事件后,退出 RunLoop 。

第一、二种说明:

因为默认运行在 NSDefaultRunLoopMode 模式下,所以 [runLoop addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode] ,事件要添加在 NSDefaultRunLoopMode 下。即 Runloop 当前运行 mode 下必现要有 NSTimer 或者 Source 才能运行起来,要不然直接退出。

 

第三种举例:

_kThread 开始一直执行 timer 定时

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值