iOS 靜態(tài)庫封裝

靜態(tài)庫和動態(tài)庫

靜態(tài)庫和動態(tài)庫存在形式

  • 靜態(tài)庫:以.a 和 .framework為文件后綴名。
  • 動態(tài)庫:以.tbd(之前叫.dylib) 和 .framework 為文件后綴名。

靜態(tài)庫和動態(tài)庫的區(qū)別

  • 靜態(tài)庫:鏈接時會被完整的復制到可執(zhí)行文件中该酗,被多次使用就有多份拷貝。
  • 動態(tài)庫:鏈接時不復制窖剑,程序運行時由系統(tǒng)動態(tài)加載到內存药版,系統(tǒng)只加載一次韭畸,多個程序共用(如系統(tǒng)的UIKit.framework等)畜晰,節(jié)省內存砾莱。(注:在iOS8之前,程序中能夠通過兩種方式使用庫文件凄鼻,即.a和framework腊瑟。.a是靜態(tài)庫的方式聚假,framework本質上也是靜態(tài)庫的方式,只不過為了方便闰非,將其打包為假的動態(tài)庫膘格。真正的動態(tài)庫在iOS8之后。)

.a與.framework的區(qū)別

二者區(qū)別不大财松,.a是純二進制文件瘪贱,.a文件不能單獨使用,至少要有.h文件配合辆毡,而.framework除了二進制文件外菜秦,還包含一些資源文件(頭文件,plist等)胚迫,由于自身包含了頭文件喷户,以.framework可以單獨使用唾那。

對圖片資源和UI界面xib或nib文件的處理

.a和.framework兩種靜態(tài)庫访锻,通常都是把需要用的到圖片或者xib文件存放在一個bundle文件中,而該bundle文件的名字和.a或.framework的名字相同闹获。
.a文件中無法存放圖片或xib文件期犬,很容易理解,但是.framework從本質上說也是一個bundle文件避诽,為什么不把圖片或者xib文件直接放在.framework中而單獨再創(chuàng)建個bundle文件呢龟虎?
那是因為iOS系統(tǒng)不會去描.framework下的圖片等資源文件,也不會在項目中顯示沙庐,也就是說即使放在 .framework目錄下鲤妥,系統(tǒng)根本就不會去掃描,因此也無法發(fā)現(xiàn)使用拱雏。

category的處理

category是項目開發(fā)中經常用到的棉安,把category打包成靜態(tài)庫是沒有問題的,但是在使用這個靜態(tài)庫時铸抑,調用category中的方法時會發(fā)生找不到該方法的運行時錯誤(selector not recognized)解決的辦法如下:

  • 如果贡耽,第三庫中沒有 category,Other Linker Flags 無需設置
  • 如果鹊汛,第三方庫中有 category蒲赂,需要設置為 -ObjC
  • 如果,某些 Xcode 版本中刁憋,出現(xiàn)問題滥嘴,修改設置為 -all_load

運行模式

arm7: 在最老的支持iOS7的設備上使用
arm7s: 在iPhone5和5C上使用
arm64: 運行于iPhone5S的64位 ARM 處理器 上
i386: 32位模擬器上使用
x86_64: 64為模擬器上使用
注意:向下兼容,arm7版本可以做arm7s上運行

.a靜態(tài)庫制作

1至耻、新建項目-> 選擇 “Cocoa Touch Static Library”

1.png

2氏涩、添加庫需要包含的源代碼届囚,將你工程里的代碼添加到打靜態(tài)庫工程里:

3、配置工程:

2.png

注:需要修改Build Settings中的 Build Active Architecture Only 以滿足運行不同CPU環(huán)境的模擬器是尖。 將此設置為NO意系。
當為YES的時候,在什么環(huán)境下編譯靜態(tài)庫就支持什么環(huán)境饺汹。

4蛔添、選擇需要暴露出來的 .h 文件, .m 文件會自動編譯到 .a 文件中:

3.png

注:在工程對應的target的“Build Phases”下添加“Headers”的選項兜辞。該選項默認是沒有的迎瞧,添加方法是點擊下方的“Add BuildPhase”按鈕后選擇后即可添加。該選項下有3個子選項逸吵,分別是Public,Private,Project凶硅。通過點擊下方的加號,可以將工程中的頭文件添加到“Project”中扫皱,在其中的對應頭文件點擊右鍵足绅,選擇“Moveto PublicGroup”,當頭文件移到“Public”后韩脑,編譯工程以后氢妈,在工程編譯后.a文件所在的路徑下,會同時出現(xiàn)一個"usr/local/include"的文件夾段多,其中的頭文件就是public group中的頭文件首量。這時只需將.a文件和這個路徑下的頭文件拷貝到所需工程文件即可。

5进苍、編譯靜態(tài)庫
選擇真機設備加缘,然后 Command+B 編譯,靜態(tài)庫文件從紅色變?yōu)楹谏?br> 選擇模擬器觉啊,然后 Command+B 編譯 拣宏,靜態(tài)庫文件從紅色變?yōu)楹谏?br> 模擬器和真機環(huán)境下用的.a文件是分開的
選擇Scheme可以編譯出debug和release不同版本的靜態(tài)庫
如圖:

4.png

6、合并.a文件
如果想讓一個.a文件能同時用在真機和模擬器上柄延,需要進行合并蚀浆。
在終端輸入指令:
lipo -create 靜態(tài)庫路徑1 靜態(tài)庫路徑2 -output 靜態(tài)庫路徑3
路徑1和路徑2可以通過直接拖拽靜態(tài)庫文件獲取,路徑3為保存的路徑

通過lipo –info 靜態(tài)庫 可以查看 .a 的類型(模擬器還是真機)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末搜吧,一起剝皮案震驚了整個濱河市市俊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌滤奈,老刑警劉巖摆昧,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蜒程,居然都是意外死亡绅你,警方通過查閱死者的電腦和手機伺帘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忌锯,“玉大人伪嫁,你說我怎么就攤上這事∨伎澹” “怎么了张咳?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長似舵。 經常有香客問我脚猾,道長,這世上最難降的妖魔是什么砚哗? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任龙助,我火速辦了婚禮,結果婚禮上蛛芥,老公的妹妹穿的比我還像新娘提鸟。我一直安慰自己,他們只是感情好常空,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布沽一。 她就那樣靜靜地躺著盖溺,像睡著了一般漓糙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上烘嘱,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天昆禽,我揣著相機與錄音,去河邊找鬼蝇庭。 笑死醉鳖,一個胖子當著我的面吹牛,可吹牛的內容都是我干的哮内。 我是一名探鬼主播盗棵,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼北发!你這毒婦竟也來了纹因?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤琳拨,失蹤者是張志新(化名)和其女友劉穎瞭恰,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狱庇,經...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡惊畏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年恶耽,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颜启。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡偷俭,死狀恐怖,靈堂內的尸體忽然破棺而出缰盏,到底是詐尸還是另有隱情社搅,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布乳规,位于F島的核電站形葬,受9級特大地震影響,放射性物質發(fā)生泄漏暮的。R本人自食惡果不足惜笙以,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望冻辩。 院中可真熱鬧猖腕,春花似錦、人聲如沸恨闪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咙咽。三九已至老玛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钧敞,已是汗流浹背蜡豹。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留溉苛,地道東北人镜廉。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像愚战,于是被迫代替她去往敵國和親娇唯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內容