首先 我們要知道 庫(kù) 主要分為兩種 一個(gè) 是靜態(tài)庫(kù),一個(gè)是動(dòng)態(tài)庫(kù)称近。
下面是他們表現(xiàn)形式
靜態(tài)庫(kù): .a 和 .framework
動(dòng)態(tài)庫(kù): .dylib 和 .framework
靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)在使用上的區(qū)別
靜態(tài)庫(kù):鏈接時(shí),靜態(tài)庫(kù)會(huì)被完整地復(fù)制到可執(zhí)行文件中慎式, 被多次使用就有多份冗余拷貝
動(dòng)態(tài)庫(kù):鏈接時(shí)不復(fù)制原茅,程序運(yùn)行時(shí)由系統(tǒng)動(dòng)態(tài)加載到內(nèi)存,供程序調(diào)用抡医,系統(tǒng)只加載一次,多個(gè)程序共用,節(jié)省內(nèi)存
如何制作.a 靜態(tài)庫(kù) 其實(shí)這個(gè)和寫工具類是一個(gè)意思。
步驟一 首先新建一個(gè)靜態(tài)庫(kù)的工程
步驟二 新建完之后我們會(huì)發(fā)現(xiàn)其實(shí)他和繼承NSObjc 其實(shí)是一個(gè)實(shí)現(xiàn)罷了通贞,個(gè)人認(rèn)為 唯一的就是 打包后不能看到m 實(shí)現(xiàn)的內(nèi)容。
步驟三
我們?cè)?h .m 文件中寫點(diǎn)內(nèi)容 和正常寫方法一樣
寫完之后 我們要注意一點(diǎn) 若文件多芯勘,需要指定暴露在外界的.h 看如下設(shè)置
targets -- Build Phases -- 點(diǎn)擊左上方加號(hào) --New Headers Phase
添加完后我們會(huì)看到
把我們的需要暴露的h 文件添加上即可。 根據(jù)需要放到適當(dāng)?shù)奈恢?/p>
步驟四
好了腺逛,以上內(nèi)容都完工了荷愕,最后我們可以打包了,
打包前 .a 文件是紅色的
打包后會(huì)變成黑色
如何打包呢棍矛?
command + B
即可
狀態(tài) 分成release
安疗、DeBug
、真機(jī)
够委、模擬器
在打包的時(shí)候我們根據(jù)自己需要的狀態(tài)去打包即可荐类。
打包我們?nèi)绾握业?a
很簡(jiǎn)單,
在項(xiàng)目中右鍵 -- show in Finder -- 到達(dá)目錄
最后需要說一下的是 合并 模擬器 真機(jī)的靜態(tài)庫(kù)
拿DeBug 的真機(jī)和模擬器 示范
先將 這個(gè)兩個(gè)放在同一個(gè)目錄下
cd xxx/xx
執(zhí)行命令
lipo -create Debug-iphoneos/libMJRefresh.a Debug-iphonesimulator/libMJRefresh.a -output libMJRefresh.a
分析:Debug-iphoneos/libMJRefresh.a 為真機(jī)sdk 的路徑
Debug-iphonesimulator/libMJRefresh.a 為模擬器的路徑
-output libMJRefresh.a 合并的靜態(tài)庫(kù)
制作及合并過程已經(jīng)全部完畢
開始使用第一個(gè)靜態(tài)庫(kù)吧茁帽。玉罐。屈嗤。