RunLoop:
1、機制:通過observer去觀察處理(timer-source0-source1-休眠-喚醒-timer....)
source0(觸摸事件、performSelector)
source1(基于port的線程之間事件消息)
2、Model: 5種Model(默認、UI正在改變時Track、App剛啟動第一次、系統(tǒng)的事件處理、Common)
3、注意事項:
a.主線程默認開啟RunLoop, 子線程需要自己開啟run, RunLoop需要先添加item再開啟,不然開啟RunLoop,檢測沒有item自動退出
b.為了避免操作UI時,定時器不響應,Model應設置為Common.
c.避免正在操作UI時,子線程網(wǎng)絡請求返回數(shù)據(jù),主線程更新UI,導致用戶操作不順暢, 可
[self performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO modes:@[NSDefaultRunLoopMode]];
NSDefaultRunLoopMode只有在沒有UI操作時才會執(zhí)行線程