一出爹、什么是庫(kù)?
庫(kù)是共享程序代碼的方式缎除,一般分為靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)严就。
二、靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)的區(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)存。
三颤芬、iOS靜態(tài)庫(kù)的種類悲幅?
.a和.framework
四、iOS動(dòng)態(tài)庫(kù)的種類站蝠?
.dylib和.framework
五汰具、framework為什么既是靜態(tài)庫(kù)又是動(dòng)態(tài)庫(kù)?
系統(tǒng)的.framework是動(dòng)態(tài)庫(kù)沉衣,我們自己建立的.framework一般都選靜態(tài)庫(kù)郁副,別問(wèn)為啥减牺,因?yàn)檫€不知道怎么動(dòng)??豌习。
六存谎、.a和.framework有何區(qū)別?
.a是一個(gè)純二進(jìn)制文件肥隆,.framework中除了有二進(jìn)制文件之外還有資源文件既荚。
.a文件不能直接使用,至少要有.h文件配合栋艳,.framework文件可以直接使用恰聘。
.a + .h + sourceFile = .framework。
所以建議用.framework.
七吸占、為什么要使用靜態(tài)庫(kù)?
1. 方便共享代碼晴叨,便于合理使用。
2. 實(shí)現(xiàn)iOS程序的模塊化矾屯〖嫒铮可以把固定的業(yè)務(wù)模塊化成靜態(tài)庫(kù)。
3. 和別人分享你的代碼庫(kù)件蚕,但不想讓別人看到你代碼的實(shí)現(xiàn)孙技。
4. 開(kāi)發(fā)第三方sdk的需要。
5. (腦洞)你接了一個(gè)私活排作,但是甲方遲遲沒(méi)給你大洋牵啦,這個(gè)時(shí)候。妄痪。哈雏。。你懂得??
步驟
1拌夏、打開(kāi)Xcode僧著,新建工程。Application->framework & Library
2障簿、創(chuàng)建功能類盹愚。TestFunc.h
3、實(shí)現(xiàn)功能站故。TestFunc.m
4皆怕、更改參數(shù)
在Architectures下增加armv7s,并選中西篓。將Build Active Architecture Only 設(shè)置為NO愈腾。
如果這里是這樣的就不要重復(fù)添加了。
5岂津、設(shè)置Headers虱黄,就是把你新建的文件拖到上面去。
然后需要需要下圖這樣引入吮成,必須是公開(kāi)的橱乱,否則無(wú)法引用辜梳。
打包Framework
1.選中模擬器,編譯程序
2.選中測(cè)試機(jī)泳叠,編譯程序
3.在finder中找到framework文件作瞄,一個(gè)是Debug-iphoneos(真機(jī))下的,一個(gè)是Debug-iphonesimulator(模擬器)下的危纫。
4.通過(guò)終端命令將兩個(gè)framework合為一個(gè)模擬器和真機(jī)都可使用的framework宗挥。
打開(kāi)控制臺(tái)輸入 lipo -create iphoneos下frameworkTest的路徑 simulator下frameworkTest的路徑 -output 新的路徑,這樣就完成了模擬器和真機(jī)版本的合并种蝶,新路徑下的frameworkTest就是你合并后的文件契耿,將這個(gè)文件名字改成和你未合并之前的Test一樣的名字,放到framework文件夾下螃征,替換掉原來(lái)的frameworkTest文件宵喂。
注意:合并完成后會(huì)出現(xiàn)一個(gè)如下圖的.lipo格式的文件。不用管会傲,直接改成你新建的MyTestFramework锅棕,去掉.lipo,然后按照上圖放到原來(lái)的地方替換一下就O98K了淌山!
最后裸燎,拷貝出來(lái)framework,就是我們最終制作完成的framework靜態(tài)文件了泼疑。