iOS 動態(tài)庫與靜態(tài)庫

1、庫

庫是寫好的現(xiàn)有的,成熟的,可以復(fù)用的代碼。本質(zhì)上來說庫是一種可執(zhí)行代碼的二進(jìn)制形式,可以被操作系統(tǒng)載入內(nèi)存執(zhí)行。iOS的庫分為:靜態(tài)庫(.a.framework)和動態(tài)庫(.framework)。

2、靜態(tài)庫

1、靜態(tài)庫在編譯時加載,鏈接時會完整的復(fù)制到可執(zhí)行文件中。
2、靜態(tài)庫的可執(zhí)行文件通常會比較大,因為所需的數(shù)據(jù)都會被整合到目標(biāo)代碼中,因此編譯后的執(zhí)行文件不需要外部庫的支持,直接就能使用。
3、有多個app使用就會被復(fù)制多份,不能共享且占用更多冗余內(nèi)存。
4、所有的函數(shù)都在庫中,因此當(dāng)修改函數(shù)時需要重新編譯。
5、靜態(tài)庫導(dǎo)入項目時,Embed需要設(shè)置為Do not embed

3、動態(tài)庫

1、動態(tài)庫在程序運行時由系統(tǒng)動態(tài)加載到內(nèi)存,供程序調(diào)用,如果環(huán)境缺少動態(tài)庫或者庫的版本不正確,就會導(dǎo)致程序無法運行。
2、動態(tài)庫的文件會比較小,因為在編譯過程中,數(shù)據(jù)并沒有整合到目標(biāo)代碼中,只有在執(zhí)行到該函數(shù)時才去調(diào)用庫中的函數(shù),所以首次加載時比較耗時。
3、多個程序可以共享內(nèi)存中同一份庫資源,系統(tǒng)只加載一次,多個程序可共用,節(jié)省內(nèi)存空間。
4、庫是動態(tài)的,因此修改庫中函數(shù)時,不需要重新編譯。
5、動態(tài)庫導(dǎo)入項目時,Embed需要設(shè)置為Embed and sign或者Embed Without Signing

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容