這半年項目從RN轉到原生,學習了iOS開發的皮毛後,我也深度參與iOS端的重構工做。折騰小半年項目終於上線。因此這兩天抽時間閱讀了runtime的源碼,趁着還沒忘趕忙整理記錄一下。git
- Runtime 介紹
- Runtime 可調式源碼
- Runtime 思惟導圖
由於Objective-C是一門動態語言,因此它將一些決策工做從編譯、鏈接過程推遲到運行時。因此只有編譯器是不夠的,還須要一個運行時系統 (runtime system) 來執行編譯後的代碼。這就是 Objective-C Runtime 系統存在的意義,它是整個Objective-C運行框架的一塊基石。github
想要更直觀的認識runtime過程,仍是直接跟蹤、閱讀源碼比較合適。因此我從網上找了一份能夠跟蹤調試的 runtime-750 源碼。Clone下來,在Xcode中直接運行便可,target選擇debug-objc
。框架
找到 main.m
文件,在對象方法調用前面打上斷點,就能夠跟蹤代碼的運行啦!學習
結合閱讀源碼,畫出了消息傳遞、轉發的思惟導圖,以下:debug
目前runtime閱讀還在進行中,後面會進行補充更新。若有錯誤和紕漏,還請各位留言指出~ :-D