欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    引言

    相信接觸過iOS的同學對或多或少都有耳聞。 創建一個對象:

    [[ alloc] init];

    復制代碼

    點擊進入其定義:

    可以發現其進入了文件 .h 中

    右擊該文件,選擇: show in 可以看到 暴露給我們的文件:

    雖然暴露給我們的不多,但其實已經能提供給我們很多功能,剛剛我們的對象創建就是一個典型的功能。 眾所周知, 對象是-C語言中幾乎所有對象的根類。換言之,任何一個對象的創建都是通過實現的,僅此一點,的重要性可見一斑,現在的iOS面試也越來越通過對的面試來區分iOS開發人員的水平高低。

    筆者研究源碼有一段時間了,隨著研究的深入,對的實現也越來越感興趣,因此想寫一套系列教程來和大家討論的底層實現。

    下載源碼

    蘋果開源了的實現,在網站 //objc… 中可以找到各個版本的源碼。 但提供的是一個個文件,不方便打包下載,網站 //ob… 中提供了壓縮包的下載。

    編譯

    下載下來的源碼是運行不了的,缺少一些依賴文件,找起來也比較繁瑣。這里筆者fork了一份,供大家參考(該項目編譯過程大家可以參考這篇文章: objc - 編譯源碼objc4-680 ):

    如圖,打開工程后選擇工程debug-objc,點擊run即可。由于debug-objc依賴于objc(即的源代碼編譯的庫),因此我們在main函數中所有-C的代碼會調用我們編譯的,從而方便我們調試。

    目錄分析

    源碼目錄結構如下:

    文件夾是我們引入的項目需要的依賴文件

    文件夾是對外暴露的,點開后我們不難發現ios源代碼有多大,和文章開頭給出的文件列表一模一樣:

    從字面意思了解,是私有的一些方法

    項目中會用到的頭文件

    一些 孤立 的文件,大部分可刪,只有 .h 的文件會被其他文件使用到。

    無實質用處,可全刪

    目錄,是的實現文件集合,后面的文章主要是研究這個目錄。

    小試牛刀

    在我們的main.m中,輸入以下代碼:

    #

    int main(int argc, const char * argv[]) {

    @ {

    *obj = [[ alloc] init];

    }

    0;

    }

    復制代碼

    打斷點后,我們會發現 *obj = [[ alloc] init];方法最終會調用到中的.mm中。也就是說ios源代碼有多大,對象的創建都是在.mm中完成的。 具體實現流程,會在后面的文章中逐步揭曉。

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有