RunLoop的知識小記

2021-09-27 06:32:56 字數 1061 閱讀 5685

runloop字面上的意思是,執行迴圈;

其基本作用:保持程式的持續執行;

節省cpu資源,提高程式效能:該做事時做事,該休息時休息

1.main函式中的runloop

int main(int argc, char * ar**) 

}

nsrunloop 是基於cfrunloopref的一層oc包裝,所以了解runloop內部結構,需要多研究cfrunloopref層面的api。

2.runloop與執行緒的關係

每條執行緒都有唯一的乙個與之對應的runloop物件

主線程的runloop已經自動建立好了,子執行緒的runloop需要主動建立

獲取子執行緒對應的runloop(即,currentrunloop)該方法本身是懶載入的,如果第一次呼叫就會建立當前執行緒對應的runloop並儲存,以後呼叫則直接獲取

3.runloop的獲取

#pragma mark - runloop

- (void)touchesbegan:(nsset*)touches withevent:(uievent *)event

列印的結果:

2019-09-18 15:31:31.176193+0800 nscach[60622:1117017] 0x60000184c060---0x60000184c060

2019-09-18 15:31:31.176302+0800 nscach[60622:1117017] 0x600000050600---0x600000050600

2019-09-18 15:31:31.176362+0800 nscach[60622:1117017] 0x600000050600----0x600000050600

可以看出,當前的主執行迴圈和當前執行迴圈是同乙個runloop, 最後一行可以看出,oc獲取的runloop與c的runloop可以相互轉化。

Makefile知識小記

gcc是linux中的編譯器,它是通過某種規則來進行編譯的,在這之前還有乙個linux自帶的構建器叫make,make也需要通過某種規則來構建,而這些規則就通過makefile來設定。makefile檔案的命名可以是makefile或makefile。makefile中的規則 三部分 目標 依賴 命...

Sqlite知識小記

1 sqlite3使用top的用法 sqlite3 sql是用limit這樣的語法來實現的 例 select from table where name xiao ming order by id limit 0,5 意思為查詢table表裡,欄位name為xiao ming的記錄 根據欄位id顯示...

動態庫知識小記

1.3 使用 ldd 命令找不到對應的共享庫檔案 通常情況下,許多開放源 的程式或函式庫都會預設將自己安裝到 usr local目錄下的相應位置,如 usr local bin或 usr local lib,以便與系統自身的程式或函式庫相區別 而許多 linux 系統的 etc ld.so.conf...