RunLoop

186 阅读1分钟

Source0

触摸事件处理

performSelector:onthread

Source1

基于Port的线程通讯

系统事件捕捉

timer

NSTimer

performSelector:withObject:afterDelay:

Observers

用于监听RunLoop的状态

UI刷新(BeforeWaiting)

autorelease pool 每次睡眠之前

RunLoop 与线程

每条线程都有唯一的一个与对应的RunLoop对象

RunLoop保存在一个全局的Dictionary里,线程作为key,RunLoop作为value

线程刚创建并没有RunLoop对象,RunLoop会在第一次获取它时创建

RunLoop会在线程结束时销毁

[NSRunLoop currentRunLoop];//当前线程runloop

[NSRunLoop mainRunLoop];//获得主线程runloop

RunLoop是通过内部维护的事件循环来对事件/消息进行管理的一个对象

没有消息需要处理时,休眠以避免资源占用

有消息需要处理时,立刻被唤醒

什么是RunLoop?

数据结构