Framework--怎么制作Framework

下一篇 Framework--怎么使用Framework

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)文件組成,這些文件將被編譯為庫本身麦射。

打開Xcode蛾娶,點(diǎn)擊File\New\Project,選擇iOS\Framework and Library\Cocoa Touch Static Library新建一個靜態(tài)庫工程.

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作為依賴庫添加到工程中揪惦。

將UIKit作為依賴庫添加到工程中

2.4結(jié)合頭文件
如果不結(jié)合頭文件遍搞,靜態(tài)庫是沒有用的,靜態(tài)庫編譯一組文件器腋,在這些文件中類和方法都以二進(jìn)制數(shù)據(jù)的形式存在尾抑。在你創(chuàng)建的庫中,有些類將能夠被公開訪問到蒂培,有些類只能由庫內(nèi)部訪問并使用。
1)在build欄中添加新的phase
如果你發(fā)現(xiàn)按上面找到的菜單項是灰色的(不可點(diǎn)擊的)榜苫,點(diǎn)擊下方Build Phases界面的白色區(qū)域來獲取Xcode的應(yīng)用焦點(diǎn)护戳,然后重新試一下。

2)添加頭文件
把A.h從項目導(dǎo)航欄中拖到中央面板的Copy Headers下的Public部分垂睬。這一步確保任何使用你的庫的用戶均可以獲取該頭文件媳荒。

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目錄下。

這一步默認(rèn)把實(shí)現(xiàn)文件添加到編譯列表稍坯,把頭文件添加到Project組酬荞。這意味著它們目前是私有的。

要選擇復(fù)制RWKnobControl

注意:
在你弄清楚之前,這三個組的名稱可能會讓你迷惑混巧,Public是你期望的枪向,Private下的頭文件依然是可以暴露出來的,因此名字可能有些誤導(dǎo)牲剃。諷刺的是遣疯,在Project下的頭文件對你的工程來說才是“私有”的,因此凿傅,你將會更多地希望你的頭文件或者在Public下缠犀,或者在Project下。

3.3聪舒、將控件的頭文件RWKnobControl.h分享出來

如果你不斷往庫中添加新的類辨液,記得及時更新這些類的關(guān)系(membership),使盡可能少的類成為public箱残,并確保其他非public的頭文件都在Project下滔迈。

3.4、將新加入的頭文件導(dǎo)入到A.h中
將其添加到庫的主頭文件RWnobControls.h中被辑。在這個主頭文件的幫助下燎悍,開發(fā)者使用你的庫僅僅需要導(dǎo)入一個頭文件。

//在A.h中添加如下代碼
// Knob Control
#import "RWKnobControl.h"
4盼理、配置Build Settings

1)


確保當(dāng)你使用靜態(tài)庫的時候可以定位到相關(guān)頭文件的位置

因?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笔宿。

在此目錄下犁钟,你將看到靜態(tài)庫,libRA.a泼橘,以及其他你為頭文件指定的目錄涝动。注意到,正如你所期望的炬灭,那些定為public的頭文件可以在此看到.
6醋粟、參考鏈接

http://www.cocoachina.com/ios/20150127/11022.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市重归,隨后出現(xiàn)的幾起案子米愿,更是在濱河造成了極大的恐慌,老刑警劉巖鼻吮,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件育苟,死亡現(xiàn)場離奇詭異,居然都是意外死亡椎木,警方通過查閱死者的電腦和手機(jī)违柏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來香椎,“玉大人漱竖,你說我怎么就攤上這事⌒蠓ィ” “怎么了闲孤?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長烤礁。 經(jīng)常有香客問我,道長肥照,這世上最難降的妖魔是什么脚仔? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮舆绎,結(jié)果婚禮上鲤脏,老公的妹妹穿的比我還像新娘。我一直安慰自己吕朵,他們只是感情好猎醇,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著努溃,像睡著了一般硫嘶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上梧税,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天沦疾,我揣著相機(jī)與錄音称近,去河邊找鬼。 笑死哮塞,一個胖子當(dāng)著我的面吹牛刨秆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播忆畅,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼衡未,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了家凯?” 一聲冷哼從身側(cè)響起缓醋,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎肆饶,沒想到半個月后改衩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡驯镊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年葫督,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片板惑。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡橄镜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出冯乘,到底是詐尸還是另有隱情洽胶,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布裆馒,位于F島的核電站姊氓,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏喷好。R本人自食惡果不足惜翔横,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望梗搅。 院中可真熱鬧禾唁,春花似錦、人聲如沸无切。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哆键。三九已至掘托,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間籍嘹,已是汗流浹背烫映。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工沼本, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人锭沟。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓抽兆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親族淮。 傳聞我的和親對象是個殘疾皇子辫红,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容