庫(kù)是程序代碼的集合,是共享程序代碼的一種方式
根據(jù)源代碼的公開情況,庫(kù)可以分為 2 種類型
公開源代碼,能看到具體實(shí)現(xiàn)
比如 SDWebImage 、 AFNetworking
不公開源代碼,是經(jīng)過(guò)編譯后的二進(jìn)制文件,看不到具體實(shí)現(xiàn)
主要分為:靜態(tài)庫(kù)、動(dòng)態(tài)庫(kù)
靜態(tài)庫(kù): .a 和 .framework
動(dòng)態(tài)庫(kù): .dylib 和 .framework
靜態(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)存 (右圖所示)
需要注意的是:
項(xiàng)目中如果使用了自制的動(dòng)態(tài)庫(kù),不能被上傳到 AppStore
新建項(xiàng)目-> 選擇 “Cocoa Touch Static Library”
添加庫(kù)需要包含的源代碼
將李明杰老師的刷新框架MJRefresh拖入工程
選擇需要暴露出來(lái)的 .h 文件, .m 文件會(huì)自動(dòng)編譯到 .a 文件中
選擇真機(jī)設(shè)備,然后 Command+B 編譯, libMJRefresh.a 文件從紅色變?yōu)楹谏?/p>
選擇模擬器,依然 Command+B ,模擬器和真機(jī)環(huán)境下用的 .a 文件是分開的
右擊 “Show In Finder” ,查看制作好的 .a 文件
Debug-iphoneos 文件夾里面的東西是用在真機(jī)上的
Debug-iphonesimulator 文件夾里面的東西是用在模擬器上的
如果 Scheme 是 Release 模式,生成的文件夾就以 Release 開頭
在終端輸入指令
1 | lipo -create Debug-iphoneos/libMJRefresh.a Debug-iphonesimulator/libMJRefresh.a -output libMJRefresh.a |
.a 文件的體積(一般情況下)
真機(jī)用的 .a > 模擬器用的 .a
所合成 .a == 真機(jī)用的 .a + 模擬器用的 .a
通過(guò) lipo –info libMJRefresh.a 可以查看 .a 的類型(模擬器還是真機(jī))
如何使用 .a
直接將 .a 、 .h 、資源文件拖拽到其他項(xiàng)目中即可
聯(lián)系客服