靜態(tài)庫.a 和.framework的區(qū)別

一饮醇、什么是庫毕源?

庫是共享程序代碼的方式浪漠。

庫從本質上來說是一種可執(zhí)行代碼的二進制格式,可以被載入內存中執(zhí)行霎褐。庫分靜態(tài)庫和動態(tài)庫兩種址愿。
iOS中的靜態(tài)庫有 .a 和 .framework兩種形式;動態(tài)庫有.dylib 和 .framework 形式冻璃,后來.dylib動態(tài)庫又被蘋果替換成.tbd的形式响谓。

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

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

動態(tài)庫: 鏈接時不復制跋炕,程序運行時由系統(tǒng)動態(tài)加載到內存赖晶,供程序調用,系統(tǒng)只加載一次辐烂,多個程序共用遏插,節(jié)省內存。[ios暫時只允許使用系統(tǒng)動態(tài)庫]纠修;

靜態(tài)庫和動態(tài)庫是相對編譯期和運行期的:靜態(tài)庫在程序編譯時會被鏈接到目標代碼中胳嘲,程序運行時將不再需要改靜態(tài)庫;而動態(tài)庫在程序編譯時并不會被鏈接到目標代碼中扣草,只是在程序運行時才被載入了牛,因為在程序運行期間還需要動態(tài)庫的存在颜屠。
總結:同一個靜態(tài)庫在不同程序中使用時,每一個程序中都得導入一次鹰祸,打包時也被打包進去甫窟,形成一個程序。而動態(tài)庫在不同程序中福荸,打包時并沒有被打包進去蕴坪,只在程序運行使用時,才鏈接載入(如系統(tǒng)的框架如UIKit敬锐、Foundation等),所以程序體積會小很多呆瞻,但是蘋果不讓使用自己的動態(tà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ū)別匿垄?

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

  2. .a文件不能直接使用椿疗,至少要有.h文件配合漏峰,.framework文件可以直接使用。

  3. .a + .h + sourceFile = .framework届榄。

  4. 建議用.framework.

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

  1. 方便共享代碼铝条,便于合理使用靖苇。

  2. 實現(xiàn)iOS程序的模塊化」ド梗可以把固定的業(yè)務模塊化成靜態(tài)庫顾复。

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

  4. 開發(fā)第三方sdk的需要芯砸。

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

  1. 注意理解:無論是.a靜態(tài)庫還.framework靜態(tài)庫,我們需要的都是二進制文件+.h+其它資源文件的形式假丧,不同的是双揪,.a本身就是二進制文件,需要我們自己配上.h和其它文件才能使用包帚,而.framework本身已經包含了.h和其它文件渔期,可以直接使用。

  2. 圖片資源的處理:兩種靜態(tài)庫渴邦,一般都是把圖片文件單獨的放在一個.bundle文件中疯趟,一般.bundle的名字和.a或.framework的名字相同。.bundle文件很好弄谋梭,新建一個文件夾信峻,把它改名為.bundle就可以了,右鍵瓮床,顯示包內容可以向其中添加圖片資源盹舞。

  3. category是我們實際開發(fā)項目中經常用到的,把category打成靜態(tài)庫是沒有問題的隘庄,但是在用這個靜態(tài)庫的工程中踢步,調用category中的方法時會有找不到該方法的運行時錯誤(selector not recognized),解決辦法是:在使用靜態(tài)庫的工程中配置other linker flags的值為-ObjC丑掺。

  4. 如果一個靜態(tài)庫很復雜获印,需要暴露的.h比較多的話,就可以在靜態(tài)庫的內部創(chuàng)建一個.h文件(一般這個.h文件的名字和靜態(tài)庫的名字相同)吼鱼,然后把所有需要暴露出來的.h文件都集中放在這個.h文件中蓬豁,而那些原本需要暴露的.h都不需要再暴露了,只需要把.h暴露出來就可以了菇肃。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末地粪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子琐谤,更是在濱河造成了極大的恐慌蟆技,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斗忌,死亡現(xiàn)場離奇詭異质礼,居然都是意外死亡,警方通過查閱死者的電腦和手機织阳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門眶蕉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人唧躲,你說我怎么就攤上這事造挽〖盍В” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵饭入,是天一觀的道長嵌器。 經常有香客問我,道長谐丢,這世上最難降的妖魔是什么爽航? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮乾忱,結果婚禮上讥珍,老公的妹妹穿的比我還像新娘。我一直安慰自己饭耳,他們只是感情好串述,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著寞肖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪衰腌。 梳的紋絲不亂的頭發(fā)上新蟆,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機與錄音右蕊,去河邊找鬼琼稻。 笑死,一個胖子當著我的面吹牛饶囚,可吹牛的內容都是我干的帕翻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼萝风,長吁一口氣:“原來是場噩夢啊……” “哼嘀掸!你這毒婦竟也來了?” 一聲冷哼從身側響起规惰,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤睬塌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后歇万,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體揩晴,經...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年贪磺,在試婚紗的時候發(fā)現(xiàn)自己被綠了硫兰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡寒锚,死狀恐怖劫映,靈堂內的尸體忽然破棺而出违孝,到底是詐尸還是另有隱情,我是刑警寧澤苏研,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布等浊,位于F島的核電站,受9級特大地震影響摹蘑,放射性物質發(fā)生泄漏筹燕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一衅鹿、第九天 我趴在偏房一處隱蔽的房頂上張望撒踪。 院中可真熱鬧,春花似錦大渤、人聲如沸制妄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耕捞。三九已至,卻和暖如春烫幕,著一層夾襖步出監(jiān)牢的瞬間俺抽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工较曼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留磷斧,地道東北人。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓捷犹,卻偏偏與公主長得像弛饭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子萍歉,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內容