封裝.a檔案以及應用.a檔案
簡介什麼是庫?
庫是程式碼的集合,是共用程式碼的一種方式
根據原始碼的公開情況,庫可以分為2種類型
開源庫
公開原始碼,能看到具體實現
比如SDWebImage、AFNetworking
閉源庫
不公開原始碼,是經過編譯後的二進位檔案,看不到具體實現
主要分為:靜態庫、動態庫
靜態庫和動態庫
靜態庫和動態庫的存在形式
靜態庫:.a和.framework
動態庫:.dylib和.framework
靜態庫和動態庫在使用上的區別
靜態庫:連結時,靜態庫會被完整地複製到可執行檔中,被多次使用就有多份冗餘拷貝(左圖所示)
動態庫:連結時不複製,程式運行時由系統動態載入到記憶體,供程式調用,系統只載入一次,多個程式共用,節省記憶體(右圖所示)
需要注意的是:
項目中如果使用了自製的動態庫,不能被上傳到AppStore
製作.a
建立項目->選擇“Cocoa Touch Static Library”
添加庫需要包含的原始碼
將李明傑老師的重新整理架構MJRefresh拖入工程
選擇需要暴露出來的.h檔案,.m檔案會自動編譯到.a檔案中
選擇真機裝置,然後Command+B編譯,libFYSView.a檔案從紅色變為黑色
選擇模擬器,依然Command+B,模擬器和真機環境下用的.a檔案是分開的
右擊“Show In Finder”,查看製作好的.a檔案
Debug-iphoneos檔案夾裡面的東西是用在真機上的
Debug-iphonesimulator檔案夾裡面的東西是用在模擬器上的
如果Scheme是Release模式,產生的檔案夾就以Release開頭
如果想讓一個.a檔案能同時用在真機和模擬器上,需要進行合并
在終端輸入指令
找到對應的檔案,先cd這個檔案夾,然後執行如下操作:
1 |
lipo-createDebug-iphoneos/libMJRefresh.aDebug-iphonesimulator/libMJRefresh.a-outputlibMJRefresh.a |
.a檔案的體積(一般情況下)