ios中靜態庫與動態庫的區別
1.存在形式
靜態庫 .a 和.framework
動態庫 .dylib和.framework
2.使用上的不同
靜態庫 鏈結時,會完整的複製到可執行檔案中,被多次使用就會產生多分冗餘的拷貝。
動態庫 鏈結時不複製,只在程式執行時由系統動態載入到記憶體中供程式呼叫,系統僅載入一次就可供多個程式共用,這樣可節省記憶體。
3.靜態庫在使用時的注意點
.a 本身就是乙個二進位制檔案,需要配合.h 和其他的資源檔案才能正常使用
.framework 本身已包含了 .h 和其他資源檔案,可以直接使用
.a 的操作
如果想讓乙個.a檔案能同時用在真機和模擬器上,需要進行合併
在終端輸入指令
lipo -create
debug-iphoneos/***x.a
debug-iphonesimulator/***x.a
-output
***xx.a
.a檔案的體積(一般情況下)
真機用的.a > 模擬器用的.a
所合成.a == 真機用的.a + 模擬器用的.a
通過lipo –info ***.a可以檢視 .a 的型別(模擬器還是真機)
q:如何判斷乙個字尾名為.framework 的庫是靜態庫還是動態庫
a:系統的.framework 是動態庫,由程式設計師自己製作的.framework 是靜態庫
q:靜態庫中包含了category
如果靜態庫中包含了category,有時候在使用靜態庫的工程中會報「方法找不到」的錯誤(unrecognized selector sent to instance)
a:解決方案:在使用靜態庫的工程中配置other linker flags為-objc
Cocoapods與Framework的使用
cocoapods的安裝使用請參照 安裝cocoapods 開啟終端,輸入命令 sudo gem install cocoapods 等待幾秒後即可安裝成功。使用cocoapods,以alamofire為例 分三個步驟 1 在專案檔案關中建立podfile 檔案,podfiel檔案是 cocoapo...
iOS庫 a與 framework區別
一 什麼是庫?庫是共享程式 的方式,一般分為靜態庫和動態庫。二 靜態庫與動態庫的區別?靜態庫 鏈結時完整地拷貝至可執行檔案中,被多次使用就有多份冗餘拷貝。動態庫 鏈結時不複製,程式執行時由系統動態載入到記憶體,供程式呼叫,系統只載入一次,多個程式共用,節省記憶體。三 ios裡靜態庫形式?a和.fra...
iOS庫 a與 framework區別
庫是共享程式 的方式,一般分為靜態庫和動態庫。靜態庫 鏈結時完整地拷貝至可執行檔案中,被多次使用就有多份冗餘拷貝。動態庫 鏈結時不複製,程式執行時由系統動態載入到記憶體,供程式呼叫,系統只載入一次,多個程式共用,節省記憶體。a和.framework dylib和.framework 系統的.fram...