首先介紹一下什么是靜態(tài)庫(kù)?
程序編譯一般需經(jīng)預(yù)處理凄杯、編譯错洁、匯編和鏈接幾個(gè)步驟。在應(yīng)用中戒突,有一些公共代碼是需要反復(fù)使用屯碴,就把這些代碼編譯為“庫(kù)”文件;在鏈接步驟中膊存,連接器將從庫(kù)文件取得所需的代碼导而,復(fù)制到生成的可執(zhí)行文件中。這種庫(kù)稱(chēng)為靜態(tài)庫(kù)
簡(jiǎn)單來(lái)說(shuō):"靜態(tài)庫(kù)就是程序代碼的集合,是共享代碼的一種方式"
靜態(tài)庫(kù)存在的形式
分為 .a 和 .framework?
動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)使用上的區(qū)別
蘋(píng)果系統(tǒng)內(nèi)部都是使用的動(dòng)態(tài)庫(kù),因?yàn)樾阅鼙容^高;
靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)在使用上的區(qū)別
靜態(tài)庫(kù):鏈接時(shí)隔崎,靜態(tài)庫(kù)中使用的文件會(huì)被完整地復(fù)制到可執(zhí)行文件中今艺,被多次使用就有多份冗余拷貝
動(dòng)態(tài)庫(kù):不復(fù)制,程序運(yùn)行時(shí)由系統(tǒng)動(dòng)態(tài)加載到內(nèi)存爵卒,供程序調(diào)用虚缎,系統(tǒng)只加載一次,多個(gè)程序共用钓株,節(jié)省內(nèi)存
需要注意的是:
項(xiàng)目中如果使用了自制的動(dòng)態(tài)庫(kù)实牡,不能被上傳到AppStore?
原因:安全問(wèn)題(能替換系統(tǒng)內(nèi)部方法的話,能竊取用戶信息);
創(chuàng)建靜態(tài)庫(kù)
說(shuō)了這么多開(kāi)始上圖!
創(chuàng)建倉(cāng)庫(kù),在文件中寫(xiě)入方法!
在運(yùn)行一下~
創(chuàng)建一個(gè)新的Demo用來(lái)測(cè)試
導(dǎo)入頭文件,
就可以直接用了!怎么樣 .a 靜態(tài)庫(kù)很簡(jiǎn)單吧!
帶資源的靜態(tài)庫(kù)
首先庫(kù)的文件中添加使用圖片的方法!
拖一個(gè)資源時(shí)別忘了勾選!!
添加路徑..資源
需要 運(yùn)行一下,去資源庫(kù)文件夾里查看,資源是否存在
?拖到Demo項(xiàng)目中去, 就可以調(diào)用方法使用資源了!
我們開(kāi)發(fā)中一搬把文件放在bundle里面
在樣開(kāi)發(fā)測(cè)試庫(kù)太麻煩,所以,我們采用第二套方案
把圖片資源直接拖到Bundle里面,
更改一下方法中使用讀取圖片的方法!改成從Bundle中讀取就可以了!
運(yùn)行一下!把庫(kù)文件拖入Demo中!
別怪我啰嗦,記得Demo中我們上一次使用的沒(méi)帶資源的庫(kù),要?jiǎng)h除掉!在項(xiàng)目中刪除,還要在跳進(jìn)去,在文件夾中刪除!不然拖不進(jìn)去!
這樣我們的 .a 的靜態(tài)庫(kù)就做好了!!!很簡(jiǎn)單吧!
.Framework和.a創(chuàng)建方法差不多!幾個(gè)注意的地方我這里簡(jiǎn)單說(shuō)一下!!
首先創(chuàng)建成功的.framwork 是動(dòng)態(tài)的需要修改一下
注意 創(chuàng)建靜態(tài)庫(kù)別忘了需改-ObjC 不然會(huì)崩掉!
這是本人自己的理解!如有不對(duì)的地方,還望海涵!!!!!!