亚洲免费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)用
        狠狠色噜噜狠狠狠狠97首创麻豆| 人妻忍着娇喘被中进中出视频| 国产精品自在线拍国产| 97se亚洲国产综合自在线图片| 少妇bbwbbw高潮| 国产91在线播放九色快色| 女人av天堂国产在线| 乱人妻中文字幕| 亚州综合激情另类久久久| 亚洲24小时在线免费视频网站| 亚洲视频一区二区免费看| 日本亚洲精品一区二区三| 小鲜肉自慰网站| 国产偷v国产偷v亚洲偷v| 国产精品成人黄色大片| 国产亚洲人成在线观看| 亚洲第一页综合图片自拍| 亚洲国产精品线路久久| 亚洲中字幕永久在线观看| 人妻被公上司喝醉在线中文字幕| 日本一本免费一二区| 99久久国产福利自产拍| 一区二区久久不射av| 在线亚洲精品中文字幕美乳色| 欧美噜噜久久久xxx| 国产在线精品一区二区三区不卡| 中文字幕av无码一区二区三区电影| 国产一区二区三区18p| 国产夫妇肉麻对白| 性一交一乱一透一a级| 2021国内精品久久久久精免费| 男女视频在线观看一区二区| 无码喷潮a片无码高潮| a级毛片毛片免费观看久潮喷| 九九精品无码专区免费| 人妻中文字幕一区二区二区| 手机在线播放av网址| 午夜不卡无码中文字幕影院| 中文字幕人妻中文av不卡专区| 波多吉野一区二区三区av| a黄片在线视频免费播放|