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

iOS專題2:靜態(tài)庫和動(dòng)態(tài)庫詳解

動(dòng)態(tài)庫與靜態(tài)庫優(yōu)缺點(diǎn)比較

if(庫)
{
    if(1.開源庫){
       :比如github上面的大多數(shù)庫
    }

    if(2.閉源庫){
      一.靜態(tài)庫:.a和.framework
      
     二.動(dòng)態(tài)庫:.dylib和.framework(系統(tǒng)直接提供給我們的framework都是動(dòng)態(tài)庫?。?  }
}

靜態(tài)庫和動(dòng)態(tài)庫的framework長得不一樣

framework文件內(nèi)部除了有二進(jìn)制文件(“黑色文件”)之外還有其他的資源文件(相當(dāng)于:.framwork文件=黑色二進(jìn)制文件<.a文件+.h文件>+資源文件<圖片、以及本地的html5,json,plist等),可以直接拿來在工程中使用。

.a封成的靜態(tài)庫,一般來講只包含了編譯好的可執(zhí)行代碼,從這個(gè)層面上來講.framework靜態(tài)庫和.a靜態(tài)庫最大的區(qū)別在于,.framework靜態(tài)庫集合的東西多點(diǎn)咯


framework本來是蘋果專屬的內(nèi)部提供的動(dòng)態(tài)庫文件格式,但是自從2014年WWDC之后,開發(fā)者也可以自定義創(chuàng)建framework實(shí)現(xiàn)動(dòng)態(tài)更新(繞過apple store審核,從服務(wù)器發(fā)布更新版本)的功能,這與蘋果限定的上架的app必須經(jīng)過apple store的審核制度是沖突的,所以含有自定義的framework的app是無法在商店上架的,但是如果開發(fā)的是企業(yè)內(nèi)部應(yīng)用,就可以考慮嘗試使用動(dòng)態(tài)更新技術(shù)來將多個(gè)獨(dú)立的app或者功能模塊集成在一個(gè)app上面?。ㄎ议_發(fā)的就是企業(yè)內(nèi)部使用的app,我們將企業(yè)官網(wǎng)中的板塊開發(fā)成4個(gè)獨(dú)立的app,然后將其改造為framework文件最終集成在一款平臺(tái)級的app當(dāng)中進(jìn)行使用,這樣就可以在一款app上面使用原本4個(gè)app的全部功能!

這段話可以概括為framework有比較強(qiáng)的集成功能。


程序編譯一般需經(jīng)預(yù)處理、編譯、匯編和鏈接幾個(gè)步驟。靜態(tài)庫特點(diǎn)是可執(zhí)行文件中包含了庫代碼的一份完整拷貝;缺點(diǎn)就是被多次使用就會(huì)有多份冗余拷貝。

靜態(tài)庫和動(dòng)態(tài)庫是兩種共享程序代碼的方式,它們的區(qū)別是:靜態(tài)庫在程序的鏈接階段被復(fù)制到了程序中,和程序運(yùn)行的時(shí)候沒有關(guān)系;動(dòng)態(tài)庫在鏈接階段沒有被復(fù)制到程序中,而是程序在運(yùn)行時(shí)由系統(tǒng)動(dòng)態(tài)加載到內(nèi)存中供程序調(diào)用。使用動(dòng)態(tài)庫的優(yōu)點(diǎn)是系統(tǒng)只需載入一次動(dòng)態(tài)庫,不同的程序可以得到內(nèi)存中相同的動(dòng)態(tài)庫的副本,因此節(jié)省了很多內(nèi)存。

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

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

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