ios-Runloop

1.Runloop的实现原理,请查看该博客:http://www.jianshu.com/p/37ab0397fec7  或  http://blog.ibireme.com/2015/05/18/runloop/


个人笔记:

一.调用主线程的run loop进行阻塞的各种方式:

[[NSRunLoop mainRunLoop] run]; //主线程永远等待,但让出主线程时间片

[[NSRunLoop mainRunLooprunUntilDate:[NSDate distantFuture]]; //等同上面调用

[[NSRunLoop mainRunLooprunUntilDate:[NSDate date]]; //立即返回

[[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:10.0]]; //主线程等待,但让出主线程时间片,然后过10秒后返回

[[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate: [NSDate distantFuture]]; //主线程等待,但让出主线程时间片;有事件到达就返回,比如点击UI等。

[[NSRunLoop mainRunLooprunMode:NSDefaultRunLoopMode beforeDate: [NSDate date]]; //立即返回

[[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate: [NSDate dateWithTimeIntervalSinceNow:10.0]]; //主线程等待,但让出主线程时间片;有事件到达就返回,如果没有则过10秒返回。

二.当add一个timer或port后,除非设定了超时时间或者remove了,否则runloop不会自动退出。可以用来常驻子线程,让子线程一直处理某事情,例如:AFNetworking中利用后台线程处理delegate回调。

三.几种应用场景:

1.开启一个常驻子线程(让子线程不消亡,等待其他线程消息,处理事件)。

2.线程之间同步。

3.在子线程中开启定时器或执行performSelector事件。

4.让定时器或performSelector事件在特定模式下执行。

5.添加observer监听runloop状态,比如监听点击事件。

四.与runloop、performSelector有关的timer一些接口:http://blog.csdn.net/lengshengren/article/details/12905635




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值