首先 我們要知道 庫 主要分為兩種 一個 是靜態庫,一個是動態庫。
下面是他們表現形式
靜態庫: .a 和 .framework
動態庫: .dylib 和 .framework
靜態庫和動態庫在使用上的區別
靜態庫:鏈接時,靜態庫會被完整地復制到可執行文件中, 被多次使用就有多份冗余拷貝
動態庫:鏈接時不復制,程序運行時由系統動態加載到內存,供程序調用,系統只加載一次,多個程序共用,節省內存
如何制作.a 靜態庫 其實這個和寫工具類是一個意思。
步驟一 首先新建一個靜態庫的工程
步驟二 新建完之后我們會發現其實他和繼承NSObjc 其實是一個實現罷了,個人認為 唯一的就是 打包后不能看到m 實現的內容。
步驟三
我們在.h .m 文件中寫點內容 和正常寫方法一樣
寫完之后 我們要注意一點 若文件多,需要指定暴露在外界的.h 看如下設置
targets -- Build Phases -- 點擊左上方加號 --New Headers Phase
添加完后我們會看到
把我們的需要暴露的h 文件添加上即可。 根據需要放到適當的位置
步驟四
好了,以上內容都完工了,最后我們可以打包了,
打包前 .a 文件是紅色的
打包后會變成黑色
如何打包呢?
command + B
即可
狀態 分成release
、DeBug
、真機
、模擬器
在打包的時候我們根據自己需要的狀態去打包即可。
打包我們如何找到.a
很簡單,
在項目中右鍵 -- show in Finder -- 到達目錄
最后需要說一下的是 合并 模擬器 真機的靜態庫
拿DeBug 的真機和模擬器 示范
先將 這個兩個放在同一個目錄下
cd xxx/xx
執行命令
lipo -create Debug-iphoneos/libMJRefresh.a Debug-iphonesimulator/libMJRefresh.a -output libMJRefresh.a
分析:Debug-iphoneos/libMJRefresh.a 為真機sdk 的路徑
Debug-iphonesimulator/libMJRefresh.a 為模擬器的路徑
-output libMJRefresh.a 合并的靜態庫
制作及合并過程已經全部完畢
開始使用第一個靜態庫吧。。。