關(guān)于靜態(tài)庫和動態(tài)庫

如何區(qū)分一個framework是動態(tài)庫還是靜態(tài)庫

兩者區(qū)別:

一,靜態(tài)庫的使用需要:

1 包含一個對應(yīng)的頭文件告知編譯器lib文件里面的具體內(nèi)容

2 設(shè)置lib文件允許編譯器去查找已經(jīng)編譯好的二進制代碼

二颅痊,動態(tài)庫的使用:

程序運行時需要加載動態(tài)庫局待,對動態(tài)庫有依賴性,需要手動加入動態(tài)庫

三钳榨,依賴性:

靜態(tài)鏈接表示靜態(tài)性,在編譯鏈接之后营罢, lib庫中需要的資源已經(jīng)在可執(zhí)行程序中了, 也就是靜態(tài)存在饲漾,沒有依賴性了

動態(tài),就是實時性吃型,在運行的時候載入需要的資源僚楞,那么必須在運行的時候提供 需要的 動態(tài)庫,有依賴性赐写, 運行時候沒有找到庫就不能運行了

四兴枯,區(qū)別:

簡單講,靜態(tài)庫就是直接將需要的代碼連接進可執(zhí)行程序财剖;動態(tài)庫就是在需要調(diào)用其中的函數(shù)時,根據(jù)函數(shù)映射表找到該函數(shù)然后調(diào)入堆棧執(zhí)行沦补。

做成靜態(tài)庫可執(zhí)行文件本身比較大咪橙,但不必附帶動態(tài)庫

做成動態(tài)庫可執(zhí)行文件本身比較小,但需要附帶動態(tài)庫

五: 首先糾正所謂“靜態(tài)連接就是把需要的庫函數(shù)放進你的exe之中”的說法产舞。在真實世界中菠剩,有三個概念:Use? static? libary,? static? linked? DLL,? dynamic? linked? DLL.

多數(shù)人混淆了static? libary? 和? static? linked? DLL的概念,當(dāng)然他們有似是而非的“相似之處”具壮,比如都用到.lib,下面具體說明攘已。

使用靜態(tài)庫(Use? static? libary)是把.lib和其他.obj一起build在目標(biāo)文件中怜跑,目標(biāo)文件可以是.exe,也可以是.dll或.oxc等。一般情況下彤灶,可以根本就沒有“對應(yīng)的”.dll? 文件,如C? Run? Time(CRT)庫幌陕。一個例子就是,寫一個main(){}棚唆,build出來并不是只有幾個字節(jié)心例,當(dāng)然有人會說那還有exe文件頭呢?是止后,即使加上文件頭的尺寸,build出的執(zhí)行文件仍然“莫名的大”瓜喇。實際上那多出來的部分就是CRT靜態(tài)庫歉糜。姑且可以把靜態(tài)庫.lib理解成外部程序的obj文件比較合理,它包含了函數(shù)的實現(xiàn)伞辛。

一夯缺、什么是庫?

庫是共享程序代碼的方式踊兜,一般分為靜態(tài)庫和動態(tài)庫。

二、靜態(tài)庫與動態(tài)庫的區(qū)別典蝌?

靜態(tài)庫:鏈接時完整地拷貝至可執(zhí)行文件中头谜,被多次使用就有多份冗余拷貝。

動態(tài)庫:鏈接時不復(fù)制,程序運行時由系統(tǒng)動態(tài)加載到內(nèi)存笑陈,供程序調(diào)用葵袭,系統(tǒng)只加載一次,多個程序共用坡锡,節(jié)省內(nèi)存鹉勒。

三、iOS里靜態(tài)庫形式禽额?

.a和.framework

四、iOS里動態(tài)庫形式实辑?

.dylib和.framework

五盔憨、framework為什么既是靜態(tài)庫又是動態(tài)庫?

系統(tǒng)的.framework是動態(tài)庫郁岩,我們自己建立的.framework是靜態(tài)庫问慎。

六、a與.framework有什么區(qū)別如叼?

.a是一個純二進制文件,.framework中除了有二進制文件之外還有資源文件踊沸。

.a文件不能直接使用社证,至少要有.h文件配合,.framework文件可以直接使用腺律。

.a + .h + sourceFile = .framework。

建議用.framework.

七匀钧、為什么要使用靜態(tài)庫?

方便共享代碼日杈,便于合理使用吊圾。

實現(xiàn)iOS程序的模塊化∠钇梗可以把固定的業(yè)務(wù)模塊化成靜態(tài)庫檀何。

和別人分享你的代碼庫,但不想讓別人看到你代碼的實現(xiàn)频鉴。

開發(fā)第三方sdk的需要。

八藕甩、制作靜態(tài)庫時的幾點注意:

1 注意理解:無論是.a靜態(tài)庫還.framework靜態(tài)庫周荐,我們需要的都是二進制文件+.h+其它資源文件的形式,不同的是腋妙,.a本身就是二進制文件讯榕,需要我們自己配上.h和其它文件才能使用,而.framework本身已經(jīng)包含了.h和其它文件济竹,可以直接使用霎槐。

2 圖片資源的處理:兩種靜態(tài)庫,一般都是把圖片文件單獨的放在一個.bundle文件中栽燕,一般.bundle的名字和.a或.framework的名字相同碍岔。.bundle文件很好弄,新建一個文件夾蔼啦,把它改名為.bundle就可以了,右鍵奈籽,顯示包內(nèi)容可以向其中添加圖片資源鸵赫。

3 category是我們實際開發(fā)項目中經(jīng)常用到的,把category打成靜態(tài)庫是沒有問題的狼忱,但是在用這個靜態(tài)庫的工程中一睁,調(diào)用category中的方法時會有找不到該方法的運行時錯誤(selector not recognized),解決辦法是:在使用靜態(tài)庫的工程中配置other linker flags的值為-ObjC窘俺。

4 如果一個靜態(tài)庫很復(fù)雜复凳,需要暴露的.h比較多的話,就可以在靜態(tài)庫的內(nèi)部創(chuàng)建一個.h文件(一般這個.h文件的名字和靜態(tài)庫的名字相同)染坯,然后把所有需要暴露出來的.h文件都集中放在這個.h文件中,而那些原本需要暴露的.h都不需要再暴露了单鹿,只需要把.h暴露出來就可以了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末劲妙,一起剝皮案震驚了整個濱河市儒喊,隨后出現(xiàn)的幾起案子怀愧,更是在濱河造成了極大的恐慌余赢,老刑警劉巖哈垢,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異举塔,居然都是意外死亡求泰,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門芽丹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來枉氮,“玉大人,你說我怎么就攤上這事楼肪∪乔模” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵暂殖,是天一觀的道長当纱。 經(jīng)常有香客問我,道長晨横,這世上最難降的妖魔是什么箫柳? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮悯恍,結(jié)果婚禮上库糠,老公的妹妹穿的比我還像新娘。我一直安慰自己涮毫,他們只是感情好瞬欧,可當(dāng)我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布贷屎。 她就那樣靜靜地躺著,像睡著了一般艘虎。 火紅的嫁衣襯著肌膚如雪豫尽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天顷帖,我揣著相機與錄音,去河邊找鬼渤滞。 笑死贬墩,一個胖子當(dāng)著我的面吹牛妄呕,可吹牛的內(nèi)容都是我干的陶舞。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼绪励,長吁一口氣:“原來是場噩夢啊……” “哼肿孵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起疏魏,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤停做,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后大莫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蛉腌,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年只厘,在試婚紗的時候發(fā)現(xiàn)自己被綠了烙丛。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡羔味,死狀恐怖河咽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情赋元,我是刑警寧澤忘蟹,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站们陆,受9級特大地震影響寒瓦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜坪仇,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一杂腰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧椅文,春花似錦喂很、人聲如沸惜颇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凌摄。三九已至,卻和暖如春漓帅,著一層夾襖步出監(jiān)牢的瞬間锨亏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工忙干, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留器予,地道東北人。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓捐迫,卻偏偏與公主長得像乾翔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子施戴,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容