靜態(tài)庫和動態(tài)庫是相對編譯期和運行期的:
靜態(tài)庫在程序編譯時會被鏈接到目標(biāo)代碼中,程序運行時將不再需要改靜態(tài)庫;
動態(tài)庫在程序編譯時并不會被鏈接到目標(biāo)代碼中,只是在程序運行時才被載入,因為在程序運行期間還需要動態(tài)庫的存在。
靜態(tài)庫 優(yōu)點:
1.模塊化,分工合作,提高了代碼的復(fù)用及核心技術(shù)的保密程度
2.避免少量改動經(jīng)常導(dǎo)致大量的重復(fù)編譯連接
3.也可以重用,注意不是共享使用
動態(tài)庫 優(yōu)點:
1.使用動態(tài)庫,可以將最終可執(zhí)行文件體積縮小,將整個應(yīng)用程序分模塊,團(tuán)隊合作,進(jìn)行分工,影響比較小
2.使用動態(tài)庫,多個應(yīng)用程序共享內(nèi)存中得同一份庫文件,節(jié)省資源
3.使用動態(tài)庫,可以不重新編譯連接可執(zhí)行程序的前提下,更新動態(tài)庫文件達(dá)到更新應(yīng)用程序的目的。
4.應(yīng)用插件化
5.軟件版本實時模塊升級
6.共享可執(zhí)行文件 在其它大部分平臺上,動態(tài)庫都可以用于不同應(yīng)用間共享,這就大大節(jié)省了內(nèi)存。
從目前來看,iOS仍然不允許進(jìn)程間共享動態(tài)庫,即iOS上的動態(tài)庫只能是私有的,因為我們?nèi)匀徊荒軐討B(tài)庫文件放置在除了自身沙盒以外的其它任何地方。 不過iOS8上開放了App Extension功能,可以為一個應(yīng)用創(chuàng)建插件,這樣主app和插件之間共享動態(tài)庫還是可行的。