深刻浅出 RunLoop(一):初识
深刻浅出 RunLoop(二):数据结构
深刻浅出 RunLoop(三):事件循环机制
深刻浅出 RunLoop(四):RunLoop 与线程
深刻浅出 RunLoop(五):RunLoop 与 NSTimer
深刻浅出 RunLoop(六):相关面试题html
RunLoop
是经过内部维护的事件循环来对事件/消息进行管理的一个对象;RunLoop
不是一个简单的do...while
循环,它涉及到用户态和内核态之间的切换。事件循环就是对事件/消息进行管理,事件循环能够达到:面试
mach_msg()
函数来转移当前线程的控制权给内核态/用户态。RunLoop
,main()
函数一执行完,程序就会马上退出。main()
函数中调用了UIApplicationMain
函数,这个函数内部会启动主线程的RunLoop
;RunLoop
:NSRunLoop
(是CFRunLoopRef
的封装,提供了面向对象的 API)CFRunLoopRef
NSRunLoop
和CFRunLoopRef
都表明着RunLoop
对象NSRunLoop
不开源,而CFRunLoopRef
是开源的:Core Foundation 源码RunLoop
对象的方式:// Foundation
[NSRunLoop mainRunLoop]; // 获取主线程的 RunLoop 对象
[NSRunLoop currentRunLoop]; // 获取当前线程的 RunLoop 对象
// Core Foundation
CFRunLoopGetMain(); // 获取主线程的 RunLoop 对象
CFRunLoopGetCurrent(); // 获取当前线程的 RunLoop 对象
复制代码
NSTimer
在滑动时中止工做的问题performSelector...
方法