RunLoop 相关知识点

2016-07-27  本文已影响9人  健了个平_24

RunLoop是开源的:RunLoop源码下载地址

RunLoop是事件接收和分发机制的一个实现,是消息机制的处理模式。

什么是RunLoop?

  1. 内部就是do-while循环,这个循环内部不断地处理各种任务(如:Sources、Observer、Timer)
  2. 一个线程对应一个RunLoop,主线程的RunLoop默认已经启动,子线程的RunLoop需要手动启动(调用run方法)
  3. RunLoop只能选择一个mode启动,如果当前mode中没有任何Sources(Source0、Source1)、Timer,那么直接退出RunLoop

RunLoop与线程:


Core Foundation中关于RunLoop的5个类:

其中CFRunLoopSourceRef的分类


Xcode中获取RunLoop:

Foundation:

[NSRunLoop currentRunLoop]; // 获得当前线程的RunLoop对象

[NSRunLoop mainRunLoop];    // 获得主线程的RunLoop对象

Core Foundation:

CFRunLoopGetCurrent();  // 获得当前线程的RunLoop对象

CFRunLoopGetMain();     // 获得主线程的RunLoop对象 

CFRunLoopModeRef 系统默认注册了5个Mode:

上一篇 下一篇

猜你喜欢

热点阅读