Swift中的Runtime

在OC中靈活的Runtime機制雖然有很多實用之處,衍生出的ReactNative、HotFix也用在很多項目里,但它也有著難以避免的缺陷--運行速度緩慢、內(nèi)存占用高:

占用內(nèi)存高:每當一個程序開啟,總要把每個類對應(yīng)的一對兒結(jié)構(gòu)體生成保存,如果程序中有一百個、一千個類也要全部生成,每一個實例申請時,為實例的實例變量所預(yù)留的空間也要一直保持只到實例釋放,即使它并不被使用。

運行速度慢:消息發(fā)送機制,使得每次方法調(diào)用都要層層查找,如果使用了forward和invocation那速度又會被拖慢。Apple在方法調(diào)用中使用了一個Cache緩解了一些,但在第一次調(diào)用每一個方法時,依舊很慢慢慢。

在Swift中,Swift中的類和方法是在編譯時就確定的,本身屬于靜態(tài)語言,但強大又靈活付諸了Apple很多心思的Runtime又怎么能拋棄掉呢,況且它在很多方面確實很好用。Swift兼容OC,在使用OC中的類時,依舊會Runtime:

@objc,用來將Swift的API導(dǎo)出給OC與OC runtime,如果繼承NSObject類,會自動的加入這個標識。加了該標識的方法、屬性都無法保證都會被運行時調(diào)用,Swift會做靜態(tài)優(yōu)化。

@dynamic,完全改為動態(tài)調(diào)用。使用這個標識也會隱形的加入@objc。

相關(guān)文章:

http://m.itdecent.cn/p/9c36a5b7820a

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載 運行時機制 runtime是一套比較底層的純C語言的API, 屬于C語言庫, 包含了很多底層的C語言API。...
    John_LS閱讀 2,208評論 1 8
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,824評論 4 61
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,106評論 0 9
  • 秋于秋千 天涼正好秋,光媚菊也羞。延河應(yīng)急魚相爭,暗猜乍起風(fēng)。 側(cè)望馬龍掣,黃花有蝶落。蹴罷秋千欲整衫,馭安何強策?
    不在東墻丶閱讀 182評論 0 1
  • 作者有一句非常著名的對硅谷投資者的批評:“We wanted flying cars, instead we go...
    大鵬元帥閱讀 740評論 0 0

友情鏈接更多精彩內(nèi)容