RunLoop 運行迴圈,跑圈 可以看出每條線程都有一個與之對應的RunLoop對象 主線程的RunLoop已經自動創建好了,子線程的RunLoop需要主動創建。 基本作用:保持程式的持續運行 處理App中的各種事件(比如觸摸事件,定時器事件,Selector事件) 節省COU資源,提高程式性能,該 ...
RunLoop
運行迴圈,跑圈
可以看出每條線程都有一個與之對應的RunLoop對象
主線程的RunLoop已經自動創建好了,子線程的RunLoop需要主動創建。
基本作用:保持程式的持續運行
處理App中的各種事件(比如觸摸事件,定時器事件,Selector事件)
節省COU資源,提高程式性能,該做事時做事,該休息時休息。
相當於
Bool running = YES;
do {
//執行各種任務,處理各種事件
}while(running);
return 0;
如果沒有RunLoop,程式就不會卡在那裡等你做事情,就會直接運行完自動退出。
RunLoop對象
iOS中有兩套API來訪問和使用RunLoop
1.Foundation中的
NSRunLoop
獲取RunLoop對象
[NSRunLoop currentRunLoop];獲得當前線程的RunLoop
[NSRunLoop mainRunLoop];獲得主線程的RunLoop
2.Core Foundation中的
CFRunLoopRef
獲得RunLoop對象
CFRunLoopGetCurrent();
CFRunLoopGetMain();
前者是OC的
後者是C語言的
而且前者是後者的包裝。
RunLoop資料
蘋果官方文檔
RunLoop相關類
core Foundation中關於RunLoop的5個類
- CFRunLoopRef
- CFRunLoopModeRef
- CFRunLoopSorceRef
- CFRunLoopTimerRef
- CFRunLoopObserverRef