RunLoop:
1、机制:通过observer去观察处理(timer-source0-source1-休眠-唤醒-timer....)
source0(触摸事件、performSelector)
source1(基于port的线程之间事件消息)
2、Model: 5种Model(默认、UI正在改变时Track、App刚启动第一次、系统的事件处理、Common)
3、注意事项:
a.主线程默认开启RunLoop, 子线程需要自己开启run, RunLoop需要先添加item再开启,不然开启RunLoop,检测没有item自动退出
b.为了避免操作UI时,定时器不响应,Model应设置为Common.
c.避免正在操作UI时,子线程网络请求返回数据,主线程更新UI,导致用户操作不顺畅, 可
[self performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO modes:@[NSDefaultRunLoopMode]];
NSDefaultRunLoopMode只有在没有UI操作时才会执行线程