• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

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

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

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

    1 前言

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

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

    (1) objc_object:該對象包含了一個isa指針,這也就是其為對象的標志。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    3 結(jié)論

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

    參考文獻

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

    猜你喜歡
    源碼數(shù)組數(shù)據(jù)結(jié)構(gòu)
    基于網(wǎng)頁源碼結(jié)構(gòu)理解的自適應(yīng)爬蟲代碼生成方法
    基于圖神經(jīng)網(wǎng)絡(luò)的軟件源碼漏洞檢測方法
    計算機時代(2023年6期)2023-06-15 17:49:09
    JAVA稀疏矩陣算法
    電腦報(2022年13期)2022-04-12 00:32:38
    企業(yè)如何保護源碼
    JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
    電腦報(2020年24期)2020-07-15 06:12:41
    “翻轉(zhuǎn)課堂”教學(xué)模式的探討——以《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)為例
    基于數(shù)據(jù)結(jié)構(gòu)教輔系統(tǒng)的實驗課程改革
    計算機教育(2016年4期)2016-05-20 02:36:05
    高職高專數(shù)據(jù)結(jié)構(gòu)教學(xué)改革探討
    中國市場(2016年45期)2016-05-17 05:15:48
    尋找勾股數(shù)組的歷程
    TRIZ理論在“數(shù)據(jù)結(jié)構(gòu)”多媒體教學(xué)中的應(yīng)用
    淮南市| 原阳县| 平阴县| 沂水县| 买车| 青海省| 佛坪县| 沐川县| 栖霞市| 宜兰县| 淄博市| 南丰县| 祁东县| 彭泽县| 新津县| 金堂县| 阜南县| 怀柔区| 明星| 哈巴河县| 江川县| 阜阳市| 体育| 托克逊县| 瑞昌市| 榆社县| 读书| 洮南市| 赤峰市| 德保县| 洛隆县| 延吉市| 乐清市| 岫岩| 湖州市| 方正县| 威宁| 汝城县| 清苑县| 岗巴县| 申扎县|