亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2018-02-25 14:27:38竇術(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則表示無關(guān)聯(lián)對(duì)象,如果是l則表示有關(guān)聯(lián)對(duì)象。

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

        shiftcls位:第4到36位,即有32位,表示當(dāng)前對(duì)象的類對(duì)象的指針地址,實(shí)際的是值是ISA MASK,通過這個(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:它的作用緩存方法,用來快速查找方法的執(zhí)行函數(shù),是可增量擴(kuò)展的哈希表結(jié)構(gòu),也是局部性原理的最佳應(yīng)用。

        (4) class_data_bits_t:①主要是對(duì)*rw t的封裝;②+rw t代表了類的讀寫信息,對(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)用開發(fā)[M].北京:人民郵電出版社,2016.

        猜你喜歡
        源碼數(shù)組數(shù)據(jù)結(jié)構(gòu)
        基于網(wǎng)頁源碼結(jié)構(gòu)理解的自適應(yīng)爬蟲代碼生成方法
        基于圖神經(jīng)網(wǎng)絡(luò)的軟件源碼漏洞檢測(cè)方法
        JAVA稀疏矩陣算法
        企業(yè)如何保護(hù)源碼
        JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
        “翻轉(zhuǎn)課堂”教學(xué)模式的探討——以《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)為例
        基于數(shù)據(jù)結(jié)構(gòu)教輔系統(tǒng)的實(shí)驗(yàn)課程改革
        高職高專數(shù)據(jù)結(jié)構(gòu)教學(xué)改革探討
        尋找勾股數(shù)組的歷程
        TRIZ理論在“數(shù)據(jù)結(jié)構(gòu)”多媒體教學(xué)中的應(yīng)用
        日韩精品无码一区二区中文字幕| 亚洲午夜久久久久中文字幕久| 日本韩国黄色三级三级| 蜜桃视频高清在线观看| 亚洲国产中文字幕一区| 天天摸夜夜摸摸到高潮| 熟女俱乐部五十路二区av| 国产精品自产拍在线观看免费| 人片在线观看无码| 国产激情小视频在线观看| 国产成年人毛片在线99| 国产午夜精品一区二区| 国产高潮国产高潮久久久| 国产一区二区三区精品久久呦| av熟女一区二区久久| 中文字幕一二三四五六七区| aa片在线观看视频在线播放| 精品一区二区三区无码视频| 日韩精品网| 亚洲蜜臀av一区二区三区漫画| 夫妻免费无码v看片| 九九热线有精品视频86| 国产精品乱码在线观看| 精品999无码在线观看| 中文字幕人妻激情在线视频| 国产精品午夜福利视频234区| 丰满老熟妇好大bbbbb| 欧美一级视频精品观看| 中文字幕人妻一区色偷久久| 亚洲av天堂在线视频| 99国产精品自在自在久久| 亚洲天堂在线播放| 一本色道久久88综合| 亚洲男人天堂黄色av| 亚洲av第一页国产精品| 亚洲AV色无码乱码在线观看| 亚洲av熟女天堂系列| 免费一区二区高清不卡av| 国产麻豆剧传媒精品国产av| 日韩国产一区| 久久久9色精品国产一区二区三区 国产三级黄色片子看曰逼大片 |