多线程 - RunLoop

多线程 - 4

RunLoop

常驻的主线程

RunLoop

屏幕快照 2017-07-19 上午3.37.11.png
  • 事件响应
  • 界面更新 //setNeedDisplay/setNeedLayout
  • 定时器/延迟执行 //NSTimer/CADisplayLink/performSelector/dispatch_after/dispatch_async,后两个只有在mainqueueu中才会跟runloop有关系。
  • AutoreleasePool

RunLoop的特性

和线程一一对应,每个线程只有一个runloop
线程创建时并没有runloop,需要手动创建(主线程除外)
RunLoop的创建发生在第一次获取它时
只能在线程内部获取对应RunLoop(主线程的Runloop除外)

iOS中的RunLoop

Core Foundation CFRunLoopRef
Foundation NSRunLoop

@interface NSRunLoop : NSObject {

+ (NSRunLoop *)currentRunLoop;
+ (NSRunLoop *)mainRunLoop;

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

@end

RunLoop的实际应用

常驻的后台线程

  • 将有繁重操作的回调指定到固定的线程中执行
  • perform selector 到固定的线程

RunLoop Mode

@interface NSRunLoop : NSObject {
- (void)addTimer:(NSTimer *)timer forMode:(NSString *)mode;
@end

NSDefaultRunLoopMode

                        default mode
NSRunLoopCommonModes    modal mode
                        tracking mode    UITrackingRunLoopMode

总结

RunLoop 基本概念
RunLoop 特性
RunLoop 使用
RunLoop Mode

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 RunLoop简介 神秘的RunLoop。一个应用开始运行以后放在那里,如果不对它进行任何操作,这个应用就像静...
    Claire_wu阅读 1,789评论 3 30
  • 什么是RunLoop?从字面上来看是运行循环的意思. 内部就是一个do{}while循环,在这个循环里内部不断的处...
    sunmumu1222阅读 444评论 0 0
  • 什么是RunLoop?从字面上来看是运行循环的意思.内部就是一个do{}while循环,在这个循环里内部不断的处理...
    deve_雨轩阅读 29,534评论 1 32
  • 什么是RunLoop 从字面意思看 运行循环 跑圈 基本作用 保持程序的持续运行 处理App中的各种事件(比如触摸...
    沉梦昂志__阅读 348评论 0 0
  • 梦见在玩儿王者荣耀的狄仁杰,但是这次与游戏不同,是真人游戏,而且规模更大,人也更多,就像打群架一样…… 打完架后发...
    Louirose阅读 218评论 0 0