iOS之深入解析Runtime的objc_msgSend“快速查找”底层原理
生活随笔
收集整理的這篇文章主要介紹了
iOS之深入解析Runtime的objc_msgSend“快速查找”底层原理
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Runtime
一、什么是 runtime ?
- Objective-C 語(yǔ)言將盡可能多的決策從 編譯時(shí)和鏈接時(shí) 推遲到運(yùn)行時(shí)。只要有可能,它就 動(dòng)態(tài) 地做事情,這意味著該語(yǔ)言不僅需要一個(gè)編譯器,還需要一個(gè) 運(yùn)行時(shí)系統(tǒng) 來(lái)執(zhí)行編譯后的代碼。運(yùn)行時(shí)系統(tǒng)作為 Objective-C 語(yǔ)言的一種操作系統(tǒng),它使語(yǔ)言起作用。
- 因?yàn)?Objc 是一門動(dòng)態(tài)語(yǔ)言,所以它總是想辦法把一些決定工作從編譯連接推遲到 運(yùn)行時(shí) 。也就是說(shuō)只有編譯器是不夠的,還需要一個(gè)運(yùn)行時(shí)系統(tǒng) (runtime system) 來(lái)執(zhí)行編譯后的代碼。這就是 Objective-C Runtime 系統(tǒng)存在的意義,它是整個(gè) Objc 運(yùn)行框架的一塊基石。
- runtime 簡(jiǎn)稱運(yùn)行時(shí),OC 就是運(yùn)行時(shí)機(jī)制,其中最主要的是 消息機(jī)制 。對(duì)于 C 語(yǔ)言,函數(shù)的調(diào)用在編譯的時(shí)候會(huì)決定調(diào)用哪個(gè)函數(shù)。對(duì)于 OC 的函數(shù),屬于 動(dòng)態(tài)調(diào)用過(guò)程 ,在編譯的時(shí)候并不能決定真正調(diào)用哪個(gè)函數(shù),只有在真正運(yùn)行的時(shí)候才會(huì)根據(jù)函數(shù)的名稱找到對(duì)應(yīng)的函數(shù)來(lái)調(diào)用。
- runtime 基本是用 C 和匯編 寫的,可見(jiàn)蘋果為了動(dòng)態(tài)系統(tǒng)的高效而作出的努力。
二、runtime 版本
- runtime 有兩個(gè)版本:?個(gè) Legacy 版本(早期版本) ,?個(gè) Modern
總結(jié)
以上是生活随笔為你收集整理的iOS之深入解析Runtime的objc_msgSend“快速查找”底层原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: iOS之深入解析AFNetworking
- 下一篇: iOS之深入解析Runtime的objc