国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

iOS底層解析Runtime實(shí)現(xiàn)原理

2018-02-25 14:27竇術(shù)堯趙延超張明瑞劉煜閏藝丹
電子技術(shù)與軟件工程 2018年12期
關(guān)鍵詞:源碼數(shù)組數(shù)據(jù)結(jié)構(gòu)

竇術(shù)堯 趙延超 張明瑞 劉煜 閏藝丹

摘要 針對(duì)常用的技術(shù)點(diǎn)進(jìn)行源碼剖析,分析Runt ime數(shù)據(jù)結(jié)構(gòu)的底層實(shí)現(xiàn)原理。本論文所采用的底層源碼基于objc-runtime-680版本。

【關(guān)鍵詞】iOS Runtime

1 前言

為了更好的優(yōu)化APP,提高用戶量,就要從底層出發(fā),分析源碼,熟練掌握其原理,并將其應(yīng)用到實(shí)踐當(dāng)中。2相關(guān)技術(shù)

分析Runtime的底層數(shù)據(jù)結(jié)構(gòu)中每一項(xiàng)含義。如圖1所示。

(1) objc_object:該對(duì)象包含了一個(gè)isa指針,這也就是其為對(duì)象的標(biāo)志。

(2) isa指針:分為兩種,一種是純指針型isa指針,第二種是非指針型isa指針(可以進(jìn)行內(nèi)存管理),isa指針的底層是一個(gè)64位的二進(jìn)制。

indexed位:第1位,如果為O則表示純isa指針,如果是1則表示非指針型isa指針。

has assoc位:第2位,如果是O則表示無(wú)關(guān)聯(lián)對(duì)象,如果是l則表示有關(guān)聯(lián)對(duì)象。

has cxx dtor位:第3位,當(dāng)前對(duì)象是否使用c++代碼,在ARC下,表示該對(duì)象是通過(guò)使用ARC進(jìn)行管理。

shiftcls位:第4到36位,即有32位,表示當(dāng)前對(duì)象的類對(duì)象的指針地址,實(shí)際的是值是ISA MASK,通過(guò)這個(gè)值與isa做與運(yùn)算,能夠找到該對(duì)象的bits t對(duì)象。

maglc位:第37到42位,即有6位,加載鏡像,具體的加載會(huì)在分類中討論。

weakly_referenced位:第43位,表示該對(duì)象是否有相應(yīng)的弱引用指針。

deallocating位:第44位,表示當(dāng)前isa所存儲(chǔ)的引用計(jì)數(shù)如果達(dá)到上限的話,需外空一個(gè)sidetable存儲(chǔ)相關(guān)的引用計(jì)數(shù)內(nèi)容,即散列表。

extra re位:第46到64位,額外的引用計(jì)數(shù)(當(dāng)引用計(jì)數(shù)在一個(gè)很小值時(shí)使用)。

(3) cache t:它的作用緩存方法,用來(lái)快速查找方法的執(zhí)行函數(shù),是可增量擴(kuò)展的哈希表結(jié)構(gòu),也是局部性原理的最佳應(yīng)用。

(4) class_data_bits_t:①主要是對(duì)*rw t的封裝;②+rw t代表了類的讀寫(xiě)信息,對(duì)*ro t的封裝;⑧* ro t代表了類的只讀信息。

(5)class ro t①name:該類對(duì)象的名稱②1vars: 一維數(shù)組,包含實(shí)例變量;⑧其余都是一維數(shù)組,包含了該類的屬性、協(xié)議、方法(類對(duì)象和元類對(duì)象分別包含對(duì)象方法、類對(duì)象方法。

(6) class rwt:①class ro t;②其他三項(xiàng)都是二維數(shù)組,可以動(dòng)態(tài)的根據(jù)分類名稱添加協(xié)議、屬性、方法。

(7) method_:class_rw_t中的methods是一個(gè)二維數(shù)組,其每一項(xiàng)都是一個(gè)根據(jù)名稱動(dòng)態(tài)添加的數(shù)組,該數(shù)組的每一項(xiàng)都是method_ t。

其中函數(shù)的四要素:①名稱SELName②返回值⑧參數(shù)④函數(shù)體(IMP imp)

3 結(jié)論

本文從底層源碼出發(fā),分析了每一部分的作用.并會(huì)在不斷的探索和實(shí)踐中進(jìn)步,逐漸完成對(duì)項(xiàng)目的優(yōu)化和自身的進(jìn)階。

參考文獻(xiàn)

[1] Gaurav Vaish.高性能iOS應(yīng)用開(kāi)發(fā)[M].北京:人民郵電出版社,2016.

猜你喜歡
源碼數(shù)組數(shù)據(jù)結(jié)構(gòu)
基于網(wǎng)頁(yè)源碼結(jié)構(gòu)理解的自適應(yīng)爬蟲(chóng)代碼生成方法
JAVA稀疏矩陣算法
企業(yè)如何保護(hù)源碼
JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
Excel數(shù)組公式在林業(yè)多條件求和中的應(yīng)用
“翻轉(zhuǎn)課堂”教學(xué)模式的探討——以《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)為例
基于數(shù)據(jù)結(jié)構(gòu)教輔系統(tǒng)的實(shí)驗(yàn)課程改革
尋找勾股數(shù)組的歷程
TRIZ理論在“數(shù)據(jù)結(jié)構(gòu)”多媒體教學(xué)中的應(yīng)用
《數(shù)據(jù)結(jié)構(gòu)》教學(xué)方法創(chuàng)新探討