1、什么是Framework矮锈?
Framework是資源的集合,將靜態(tài)庫和其頭文件包含到一個結(jié)構(gòu)中,讓Xcode可以方便地把它納入到你的項目中(framework本身就是靜態(tài)庫加上一組頭文件)诗轻。
framework本質(zhì)上是靜態(tài)庫的“一站式采購點(diǎn)”。
第一揭北,framework 能將不同類型的資源打包在一起扳炬,使之易于安裝,卸載與定位搔体;
第二恨樟,framework 能夠進(jìn)行版本管理,這使得 framework 能不斷更新并向后兼容疚俱;
第三劝术,在同一時間,即使有多個應(yīng)用程序使用同一 framework呆奕,但在內(nèi)存中只有一份 framework 只讀資源的拷貝养晋,這減少了對內(nèi)存的占用
2、創(chuàng)建靜態(tài)庫
2.1梁钾、創(chuàng)建一個靜態(tài)庫工程
a绳泉、將工程命名為A,然后將工程保存到一個空目錄下姆泻。
b零酪、一個靜態(tài)庫工程由頭文件和實(shí)現(xiàn)文件組成,這些文件將被編譯為庫本身麦射。
2.2潜秋、前期操作
a蛔琅、為了方便其他開發(fā)者使用你的庫和framework,你將進(jìn)行一些操作峻呛,讓他們僅需要導(dǎo)入一個頭文件便可以訪問所有你想公開的類罗售。
b、當(dāng)創(chuàng)建靜態(tài)庫工程時钩述,Xcode會自動添加A.h和A.m寨躁。你不需要實(shí)現(xiàn)文件,因此右鍵單擊A.m選擇delete牙勘,將它刪除到廢紙簍中职恳。
c所禀、打開A.h,將所有內(nèi)容替換為:
//導(dǎo)入UIKit的頭文件放钦,這是創(chuàng)建一個庫所需要的色徘。當(dāng)你在創(chuàng)建不同的組成類時,你將會將它們添加到這個文件中操禀,確保它們能夠被庫的使用者獲取到褂策。
#import < UIKit/UIKit.h>
2.3、向工程中添加依賴庫
你所構(gòu)建的項目依賴于UIKit颓屑,然而Xcode的靜態(tài)庫工程不會自動連接到UIKit斤寂。要解決這個問題,就要將UIKit作為依賴庫添加到工程中揪惦。
2.4結(jié)合頭文件
如果不結(jié)合頭文件遍搞,靜態(tài)庫是沒有用的,靜態(tài)庫編譯一組文件器腋,在這些文件中類和方法都以二進(jìn)制數(shù)據(jù)的形式存在尾抑。在你創(chuàng)建的庫中,有些類將能夠被公開訪問到蒂培,有些類只能由庫內(nèi)部訪問并使用。
1)在build欄中添加新的phase
2)添加頭文件
2.5、注意
顯然驹饺,所有包含在你的公共頭文件中的頭文件必須是對外公開的钳枕,這一點(diǎn)非常重要。否則赏壹,開發(fā)者在使用你的庫時會產(chǎn)生編譯錯誤鱼炒。如果Xcode在讀取公共頭文件時不能讀到你設(shè)為public的頭文件,會崩潰蝌借。
3昔瞧、給靜態(tài)庫添加功能
3.1、下載范列ui控件
http://cdn2.raywenderlich.com/wp-content/uploads/2014/02/BuildAFramework.zip
3.2菩佑、添加范例UI控件
把下載好的壓縮包文件中找到RWKnobControl目錄自晰,從Finder中拖到Xcode下A目錄下。
注意:
在你弄清楚之前,這三個組的名稱可能會讓你迷惑混巧,Public是你期望的枪向,Private下的頭文件依然是可以暴露出來的,因此名字可能有些誤導(dǎo)牲剃。諷刺的是遣疯,在Project下的頭文件對你的工程來說才是“私有”的,因此凿傅,你將會更多地希望你的頭文件或者在Public下缠犀,或者在Project下。
3.3聪舒、將控件的頭文件RWKnobControl.h分享出來
3.4、將新加入的頭文件導(dǎo)入到A.h中
將其添加到庫的主頭文件RWnobControls.h中被辑。在這個主頭文件的幫助下燎悍,開發(fā)者使用你的庫僅僅需要導(dǎo)入一個頭文件。
//在A.h中添加如下代碼
// Knob Control
#import "RWKnobControl.h"
4盼理、配置Build Settings
1)
因?yàn)槟阏趧?chuàng)建framework供他人使用谈山,最好禁掉這些功能(無效代碼和debug用符號),讓用戶自己選擇對自己的項目有利的部分使用宏怔。和之前一樣奏路,使用搜索框,改變下述設(shè)置:
2)Dead Code Stripping設(shè)置為NO
3)Strip Debug Symbol During Copy 全部設(shè)置為NO
4)Strip Style設(shè)置為Non-Global Symbols
5臊诊、產(chǎn)生靜態(tài)庫libA.a
5.1鸽粉、
編譯然后運(yùn)行,到目前為止沒什么可看的抓艳,不過確保項目可以成功構(gòu)建触机,沒有錯誤和警報就可以了。
5.2壶硅、
選擇目標(biāo)為iOS Device威兜,按下command + B進(jìn)行編譯,一旦成功庐椒,工程導(dǎo)航欄中Product目錄下libA.a文件將從紅色變?yōu)楹谏范妫砻鳜F(xiàn)在該文件已經(jīng)存在了。右鍵單擊libA.a约谈,選擇Show in Finder笔宿。