一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

iOS中靜態(tài)庫(kù).a、資源庫(kù).bundle、.framework的區(qū)別

 沒(méi)原創(chuàng)_去搜索 2015-09-10

在項(xiàng)目開(kāi)發(fā)過(guò)程中,經(jīng)常出現(xiàn)優(yōu)秀代碼重用現(xiàn)象,又或者提供給第三方功能模塊卻又不想讓其看到源代碼,這些時(shí)候,通常的做法是將代碼封裝成庫(kù)或者框架,這些在Windows編程或Linux編程中非常容易實(shí)現(xiàn)的過(guò)程,在iOS開(kāi)發(fā)中卻遇到了麻煩,原因是:蘋(píng)果公司禁止在iOS開(kāi)發(fā)中使用動(dòng)態(tài)庫(kù)(而蘋(píng)果自己卻可以使用動(dòng)態(tài)庫(kù)),同時(shí),蘋(píng)果也從Xcode中移除了創(chuàng)建靜態(tài)框架的功能。值得慶幸的是我們可以通過(guò)對(duì)Xcode進(jìn)行小小的改動(dòng)來(lái)創(chuàng)建靜態(tài)框架,而靜態(tài)庫(kù)和靜態(tài)框架是被App Store所允許的,其實(shí)靜態(tài)框架本質(zhì)上說(shuō)也是靜態(tài)庫(kù)的一種。

 

在正式的上代碼之前,先介紹一些從網(wǎng)上搜集的靜態(tài)庫(kù)相關(guān)的基本概念,以加深對(duì)后面知識(shí)的理解

1.  庫(kù)

       庫(kù)實(shí)際上是一種代碼共享的方式,主要用于代碼重用和源碼隱藏,通常分為動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)。

2.  區(qū)別

       靜態(tài)庫(kù):鏈接時(shí)完整的拷貝至可執(zhí)行文件中,被多次使用就有多份冗余拷貝。

       動(dòng)態(tài)庫(kù):鏈接時(shí)不復(fù)制,程序運(yùn)行時(shí)由系統(tǒng)動(dòng)態(tài)加載到內(nèi)存,供程序調(diào)用,系統(tǒng)只加載一次,多個(gè)程序共用,節(jié)省內(nèi)存空間。

3. iOS中靜態(tài)庫(kù)的形式

       在iOS中靜態(tài)庫(kù)以.a和.framework的形式存在,動(dòng)態(tài)庫(kù)以.dylib和.framework的形式存在。

       之所以.framework既可能是動(dòng)態(tài)庫(kù)又可能是靜態(tài)庫(kù),是因?yàn)樘O(píng)果公司禁止用戶級(jí)App使用動(dòng)態(tài)庫(kù),而自己卻又堂而皇之的使用動(dòng)態(tài)庫(kù),這就造成了iOS中系統(tǒng)級(jí)的.framework是動(dòng)態(tài)庫(kù),用戶級(jí)的.framework是靜態(tài)庫(kù)(無(wú)可奈何?。?/span>

4. .a與.framework的區(qū)別

        二者區(qū)別不大,.a是純二進(jìn)制文件,.a文件不能單獨(dú)使用,至少要有.h文件配合,而.framework除了二進(jìn)制文件外,還包含一些資源文件(頭文件,plist等),由于自身包含了頭文件,所以.framework可以單獨(dú)使用。

5. 靜態(tài)庫(kù)使用的必要性

    1>.  代碼的共享與重用

    2>.  程序模塊化

    3>.  分享給別人代碼庫(kù)時(shí)代碼隱藏

    4>.  開(kāi)發(fā)第三方SDK

6. 對(duì)圖片資源和UI界面xib或nib文件的處理

           .a和.framework兩種靜態(tài)庫(kù),通常都是把需要用的到圖片或者xib文件存放在一個(gè)bundle文件中,而該bundle文件的名字和.a或.framework的名字相同。關(guān)于bundle文件的制作方法,后面有專門介紹。

    有個(gè)疑問(wèn):

           .a文件中無(wú)法存放圖片或xib文件,很容易理解,但是.framework從本質(zhì)上說(shuō)也是一個(gè)bundle文件,為什么不把圖片或者xib文件直接放在.framework中而單獨(dú)再創(chuàng)建個(gè)bundle文件呢?

           那是因?yàn)閕OS系統(tǒng)不會(huì)去掃描.framework下的圖片等資源文件,也不會(huì)在項(xiàng)目中顯示,也就是說(shuō)即使放在.framework目錄下,系統(tǒng)根本就不會(huì)去掃描,因此也無(wú)法發(fā)現(xiàn)使用。

7. category的處理

       category是項(xiàng)目開(kāi)發(fā)中經(jīng)常用到的,把category打包成靜態(tài)庫(kù)是沒(méi)有問(wèn)題的,但是在使用這個(gè)靜態(tài)庫(kù)時(shí),調(diào)用category中的方法時(shí)會(huì)發(fā)生找不到該方法的運(yùn)行時(shí)錯(cuò)誤(selector not recognized),解決的辦法是在使用靜態(tài)庫(kù)的工程中配置other linker flags的值為 -ObjC  -all_load

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产精品午夜一区二区三区| 麻豆精品视频一二三区| 初尝人妻少妇中文字幕在线| 午夜日韩在线观看视频| 日韩18一区二区三区| 国内午夜精品视频在线观看| 91天堂免费在线观看| 日本高清二区视频久二区| 日韩精品少妇人妻一区二区| 开心久久综合激情五月天| 欧美大黄片在线免费观看| 熟女乱一区二区三区四区| 欧美日韩校园春色激情偷拍| 草草视频精品在线观看| 国产又黄又猛又粗又爽的片 | 欧美一区二区日韩一区二区| 日韩1区二区三区麻豆| 欧美大胆女人的大胆人体| 欧美日韩国产福利在线观看| 欧美日韩国产免费看黄片| 中文字幕乱子论一区二区三区| 亚洲欧美日韩国产综合在线| 国产对白老熟女正在播放| 我的性感妹妹在线观看| 亚洲精品国男人在线视频| 国产成人精品一区二三区在线观看 | 亚洲品质一区二区三区 | 免费在线观看激情小视频| 欧美高潮喷吹一区二区| 国产精品免费无遮挡不卡视频| 日韩精品日韩激情日韩综合| 国产精品白丝一区二区| 日本不卡一本二本三区| 久久99热成人网不卡| 日本午夜乱色视频在线观看| 日韩成人h视频在线观看 | 天海翼高清二区三区在线| 国产香蕉国产精品偷在线观看| 久久精品少妇内射毛片| 国产精品蜜桃久久一区二区| 久久人人爽人人爽大片av|