前言
最近因?yàn)槟承┰蛲捣拢吹搅撕芏嗯c“庫”相關(guān)的文章抵蚊。但是,很多文章在經(jīng)過英語→漢語的轉(zhuǎn)換后都會(huì)丟失很多信息耕赘,讓人難以理解骄蝇。所以,這篇文章會(huì)好好的總結(jié)一下 iOS 中的那些“庫”操骡。
基本概念
庫:對(duì)應(yīng)的英文為 library九火。通過組合不同的前綴,它會(huì)有不同的意義册招。比如岔激,開源庫,動(dòng)態(tài)庫是掰,靜態(tài)庫虑鼎。
開源庫:我們經(jīng)常用到的第三方庫基本上都是開源庫。比如知名的有:AFNetworking/SDWebImage。
閉源庫:常用的地圖類 SDK炫彩、統(tǒng)計(jì)類 SDK 都屬于閉源庫匾七。它們的源碼是不向公眾開放的。
靜態(tài)庫:靜態(tài)庫是目標(biāo)文件的集合或者打包江兢。靜態(tài)庫的常見后綴是 .a昨忆。
動(dòng)態(tài)庫:動(dòng)態(tài)庫不會(huì)成為可執(zhí)行文件的一部分,相反杉允,它可以應(yīng)用啟動(dòng)時(shí)或者運(yùn)行時(shí)再進(jìn)行加載扔嵌。因?yàn)殪o態(tài)庫會(huì)被包含到應(yīng)用代碼中一起加載,所以夺颤,為了加快啟動(dòng)速度,降低內(nèi)存占用胁勺,我們會(huì)使用動(dòng)態(tài)庫世澜。同時(shí),動(dòng)態(tài)庫可以使得在不重新編譯項(xiàng)目的情況下進(jìn)行平滑升級(jí)來獲得新的性能提升署穗。動(dòng)態(tài)庫的常見后綴是 .dylib寥裂。
-
框架:對(duì)應(yīng)的英文是 framework“钙#框架實(shí)際上是一個(gè)文件夾封恰。它是一系列資源的集合。我們現(xiàn)在常見的用法都是使用 動(dòng)態(tài)庫框架或者靜態(tài)庫框架褐啡。
框架可以把相關(guān)的獨(dú)立資源聚集起來诺舔。它使得安裝、卸載备畦、定位資源更加容易低飒。
框架可以包含更多類型的資源。比如懂盐,頭文件褥赊、相關(guān)文檔。
不同版本的庫可以放到同一個(gè) bundle中莉恼。這使得向后兼容成為可能拌喉。
任何情況下,只會(huì)有一份只讀拷貝存在內(nèi)存中俐银。無論有多少進(jìn)程使用它尿背。這樣可以降低內(nèi)存占用、提高性能捶惜。
請(qǐng)注意残家,雖然不常見,但是框架也可以只包含圖片資源售躁。