a與framework的不同

2021-07-05 17:49:45 字數 920 閱讀 1618

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...