06.iOS 靜態(tài)庫的封裝和使用

@(〓〓 iOS-實用技術(shù))[靜態(tài)庫/動態(tài)庫封裝]


目錄

  • 06.iOS 靜態(tài)庫的封裝和使用
  • 1.iOS 庫的基本概念
    • 靜態(tài)庫和動態(tài)庫
  • 2.靜態(tài)庫的封裝
    • .a靜態(tài)庫的封裝
      • 編譯Debug/Release 模擬器/真機(jī)版本的靜態(tài)庫
      • 合并靜態(tài)庫
    • .framework靜態(tài)庫的封裝
      • .framework靜態(tài)庫的使用

1.iOS 庫的基本概念

庫就是程序代碼的集合,是共享程序代碼的一種方式.


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

  • 1.iOS中靜態(tài)庫和動態(tài)庫文件的后綴名

    • 靜態(tài)庫文件后綴名: .a.framework
    • 動態(tài)庫文件后綴名: .dylib.framework
  • 2.靜態(tài)庫和動態(tài)庫的區(qū)別

    • 動態(tài)庫則不會復(fù)制, 只有一份. 程序運行時動態(tài)加載到內(nèi)存; 系統(tǒng)只加載一次, 多個程序共用, 節(jié)省內(nèi)存;
    • 但是項目中如果使用到自己的動態(tài)庫, 不允許上架!
      但是WWDC2014上公布的蘋果對ios8開放動態(tài)加載dylib的接口,也就是說 開放了動態(tài)庫掛載.
    • 靜態(tài)庫在鏈接時, 會被完整的復(fù)制到可執(zhí)行文件中; 被多次使用, 就有多份拷貝;

2.靜態(tài)庫的封裝

.a靜態(tài)庫的封裝

  • 1.創(chuàng)建工程選擇iOS/Framework & Library,選擇Coaoa Touch Static Library
01.創(chuàng)建工程.png

  • 2.設(shè)置對外公開的頭文件
02.設(shè)置對外公開的頭文件.png

  • 3.設(shè)置讓所有架構(gòu)都能正常編譯和使用
03.設(shè)置讓所有架構(gòu)都能正常編譯和使用.png

  • 5.創(chuàng)建一個Log類,實現(xiàn)接口方法,并在.h文件中對外提供接口方法
// Log.h文件中提供接口
+ (void)wxLog;

// Log.m文件中實現(xiàn)方法
+ (void)wxLog
{
    NSLog(@"Test Lib");
}
04.創(chuàng)建一個Log類.png

  • 6.使用快捷鍵command + b編譯靜態(tài)庫(當(dāng)前運行選擇為模擬器),編譯成功后找到庫存儲路徑.

進(jìn)入靜態(tài)庫生成的路徑中

05.靜態(tài)庫生成的路徑.png

以上操作彈出窗口后進(jìn)入Build/Products/Debug-iphonesimulator文件夾中,.a的庫文件對外公開的頭文件就存放在該目錄下.因為剛才是處于Debug模式下選擇模擬器運行環(huán)境,所以生成的Debug-iphonesimulator文件夾

06.Build:Products:Debug-iphonesimulator文件夾.png

  • 7.確保生成的靜態(tài)庫能在你所有模擬器上運行,先查看靜態(tài)庫支持的平臺.
    • 使用lipo -info查看庫所支持的架構(gòu). i386 x86_64: 表示能在所有模擬器上運行.
    • 模擬器架構(gòu): iPhone 4s - iPhone 5是i386架構(gòu),iPhone 5s - iPhone 6s Plus是x86_64架構(gòu).
07.查看庫所支持的架構(gòu).png

  • 8.靜態(tài)庫的使用.只需將生成的.a文件和.h文件拖入到測試靜態(tài)庫的工程即可使用靜態(tài)庫.
08.靜態(tài)庫的使用.png
09.靜態(tài)庫的使用.png

編譯Debug/Release 模擬器/真機(jī)版本的靜態(tài)庫

  • 1.設(shè)置要編譯成Debug還是Release版本的靜態(tài)庫.如果是要生成Release就選擇Release
10.設(shè)置要編譯成Debug還是Release版本的靜態(tài)庫.png
11.選擇對應(yīng)的版本.png

  • 2.設(shè)置要編譯成真機(jī)還是模擬器版的靜態(tài)庫
12.設(shè)置要編譯成真機(jī).png
  • 3.如果四種情況的靜態(tài)庫都進(jìn)行編譯,則會生成以下四個文件夾
13.四種情況的靜態(tài)庫都進(jìn)行編譯.png

合并靜態(tài)庫

  • 1.使用lipo -create ... -output ... 合并靜態(tài)庫.最終合并的靜態(tài)庫的大小相當(dāng)于Debug Device.a和Debug Simulator.a的總和.
14.合并靜態(tài)庫.png

.framework靜態(tài)庫的封裝

  • 1.創(chuàng)建工程選擇iOS/Framework & Library,選擇Coaoa Touch Framework
15.創(chuàng)建工程.png
  • 2.刪除自動生成的頭文件.注意: Info.plist不能刪除

16.刪除自動生成的頭文件.png

  • 3.創(chuàng)建Tool類,并對應(yīng)提供log類方法,實現(xiàn)log類方法
// Tool.h文件中提供接口
+ (void)log;

// Tool.m文件中實現(xiàn)方法
+ (void)log
{
    NSLog(@"framework Test");
}

  • 4.設(shè)置要生成的.framework文件為靜態(tài)庫
17.設(shè)置要生成的.framework文件為靜態(tài)庫.png

  • 5.設(shè)置支持所有架構(gòu)
18.設(shè)置支持所有架構(gòu).png

  • 6.設(shè)置要公開的所有頭文件
19.設(shè)置要公開的所有頭文件.png

.framework靜態(tài)庫的使用

  • 1.創(chuàng)建一個測試靜態(tài)庫的工程,生成的.framework的靜態(tài)庫拖入到工程
20.靜態(tài)庫拖入到工程.png
  • 2.使用尖括號<>導(dǎo)入頭文件之后就能正常使用.framework的靜態(tài)庫
    • 注意: 導(dǎo)入頭文件為 #import <Framework/Tool.h>
21.使用.framework的靜態(tài)庫.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市团滥,隨后出現(xiàn)的幾起案子膘婶,更是在濱河造成了極大的恐慌象对,老刑警劉巖署驻,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丹拯,死亡現(xiàn)場離奇詭異赶盔,居然都是意外死亡历恐,警方通過查閱死者的電腦和手機(jī)寸癌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來弱贼,“玉大人蒸苇,你說我怎么就攤上這事∷甭茫” “怎么了溪烤?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長庇勃。 經(jīng)常有香客問我氛什,道長,這世上最難降的妖魔是什么匪凉? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任枪眉,我火速辦了婚禮,結(jié)果婚禮上再层,老公的妹妹穿的比我還像新娘贸铜。我一直安慰自己堡纬,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布蒿秦。 她就那樣靜靜地躺著烤镐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪棍鳖。 梳的紋絲不亂的頭發(fā)上炮叶,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機(jī)與錄音渡处,去河邊找鬼镜悉。 笑死,一個胖子當(dāng)著我的面吹牛医瘫,可吹牛的內(nèi)容都是我干的侣肄。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼醇份,長吁一口氣:“原來是場噩夢啊……” “哼稼锅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起僚纷,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤矩距,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后怖竭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剩晴,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年侵状,在試婚紗的時候發(fā)現(xiàn)自己被綠了赞弥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡趣兄,死狀恐怖绽左,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情艇潭,我是刑警寧澤拼窥,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站蹋凝,受9級特大地震影響鲁纠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鳍寂,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一改含、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧迄汛,春花似錦捍壤、人聲如沸骤视。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽专酗。三九已至,卻和暖如春盗扇,著一層夾襖步出監(jiān)牢的瞬間祷肯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工疗隶, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留佑笋,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓抽减,卻偏偏與公主長得像允青,于是被迫代替她去往敵國和親橄碾。 傳聞我的和親對象是個殘疾皇子卵沉,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

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

  • 靜態(tài)庫與動態(tài)庫的區(qū)別 首先來看什么是庫史汗,庫(Library)說白了就是一段編譯好的二進(jìn)制代碼,加上頭文件就可以供別...
    吃瓜群眾呀閱讀 11,882評論 3 42
  • 僅以方便自己查閱記錄前言1.靜態(tài)庫和動態(tài)庫有什么異同拒垃?靜態(tài)庫:鏈接時完整地拷貝至可執(zhí)行文件中停撞,被多次使用就有多份冗...
    190CM閱讀 4,178評論 0 4
  • 介紹 動態(tài)庫形式:.dylib和.framework 靜態(tài)庫形式:.a和.framework 動態(tài)庫和靜態(tài)庫的區(qū)別...
    齊滇大圣閱讀 46,134評論 18 252
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,527評論 25 707
  • 已完成 【午間話題】熊二 打卡期間有什么值得回憶的事情? 1悼瓮、一次較時間晚打卡戈毒,因為哄孩子睡覺結(jié)果把自己也哄睡著了...
    撿到蜜罐的熊閱讀 164評論 0 0