iOS- SDK開發(fā)動態(tài)庫和靜態(tài)庫

前言

在iOS開發(fā)過程成,肯定會接觸到庫這個東西,比如系統(tǒng)的UIKit,第三方的SDWebImage等。所以庫其實就是代碼和文件的集合,通過這些可實現(xiàn)一些需要的功能。將這種代碼快打包成二進制文件。并且可以載入到內(nèi)存中。說白了就是將功能打包成一個模塊,方便在開發(fā)過程中使用和共享。

靜態(tài)庫和動態(tài)庫的區(qū)別

庫的本質(zhì)是可執(zhí)行的二進制文件,根據(jù)使用的方式不同,可以分為動態(tài)庫和靜態(tài)庫,其中系統(tǒng)提供的庫都屬于動態(tài)庫。

靜態(tài)庫
  1. 是以.a 或者. FrameWork的后綴形式存在。
  2. 靜態(tài)庫的可執(zhí)行文件通常會比較大,因為所需的數(shù)據(jù)都會被整合到目標代碼中,因此編譯后的執(zhí)行文件不需要外部庫的支持,直接就能使用。
  3. 靜態(tài)庫只需編譯時加載,鏈接時,會完整的復制份到可執(zhí)行文件中。
  4. 有多個app使用就會被復制多份,不能共享且占用更多冗余內(nèi)存。
  5. 所有的函數(shù)都在庫中,因此當修改函數(shù)時需要重新編譯。
動態(tài)庫
  1. 是以.tbd 或者. FrameWork的后綴形式存在。
  2. 動態(tài)庫的文件會比較小,因為在編譯過程中,數(shù)據(jù)并沒有整合到目標代碼中,只有在執(zhí)行到該函數(shù)時才去調(diào)用庫中的函數(shù),但以此首次加載就比較耗時。
  3. 動態(tài)庫由于沒有整合到目標代碼,因此編譯時不會加載,運行時動態(tài)申請調(diào)用。
  4. 多個app使用,可以共享資源減少內(nèi)存使用,但以此程序的運行環(huán)境需要提供相應的庫。
  5. 庫是動態(tài)的,因此修改庫中函數(shù)時,不需要重新編譯。

.FrameWork文件和其他兩者的區(qū)別在于,項目中庫的使用除了需要庫文件之外,還包含資源文件和頭文件。因此FrameWork其實已經(jīng)和庫文件沒有關系,只是將庫文件和所需的其他東西打包整合。

iOS8 之前,蘋果不允許第三方框架使用動態(tài)方式加載,從 iOS8 開始允許開發(fā)者有條件地創(chuàng)建和使用動態(tài)框架 Cocoa Touch Framework。和系統(tǒng) framework 不同,app 中使用 Cocoa Touch Framework 制作的動態(tài)庫 在打包和提交 app 時會被放到 app main bundle 的根目錄 中,運行在沙盒里,而不是系統(tǒng)中。也就是說,不同的 app 就算使用了同樣的 framework,但還是會有多份的框架被分別簽名,打包和加載。

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

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

  • 前言 1.靜態(tài)庫和動態(tài)庫有什么異同? 靜態(tài)庫:鏈接時完整地拷貝至可執(zhí)行文件中,被多次使用就有多份冗余拷貝。利用靜態(tài)...
    Ly夢k閱讀 8,749評論 3 18
  • 僅以方便自己查閱記錄前言1.靜態(tài)庫和動態(tài)庫有什么異同?靜態(tài)庫:鏈接時完整地拷貝至可執(zhí)行文件中,被多次使用就有多份冗...
    190CM閱讀 4,521評論 0 4
  • 介紹 動態(tài)庫形式:.dylib和.framework 靜態(tài)庫形式:.a和.framework 動態(tài)庫和靜態(tài)庫的區(qū)別...
    齊滇大圣閱讀 46,793評論 18 251
  • 2018-06-19 淺析靜態(tài)庫鏈接原理編譯原理以及什么是靜態(tài)庫和動態(tài)庫 轉(zhuǎn)之: iOS 靜態(tài)庫和動態(tài)庫(庫詳解)...
    _coCo__閱讀 702評論 0 2
  • 1.什么是庫,為什么使用庫? 庫是共享程序代碼的方式,一般分為靜態(tài)庫和動態(tài)庫;庫實現(xiàn)了iOS程序的模塊化,將某些特...
    公子墨香閱讀 11,789評論 18 59

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