您的位置:首页 > 移动开发 > IOS开发

ios-Runloop

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

个人笔记:

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

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

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

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

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

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

[[NSRunLoop mainRunLoop] runMode: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios runloop