什么是SDK開發(fā)?
日常開發(fā)中校辩,我們會(huì)遇到某些情況不能提供源碼掀宋,項(xiàng)目組件化等需求雳刺,這時(shí)候我們就可以使用SDK開發(fā),在OC的開發(fā)中划址,我們涉及到的一般是靜態(tài)庫(kù)(.a)或者動(dòng)態(tài)庫(kù)(.framework)扔嵌。(注:不是所有的.framework就一定是動(dòng)態(tài)庫(kù))
靜態(tài)庫(kù)與動(dòng)態(tài)庫(kù)的區(qū)別?
靜態(tài)庫(kù):鏈接時(shí)完整地拷貝至可執(zhí)行文件中夺颤,被多次使用就有多份冗余拷貝痢缎。表現(xiàn)形式為 .a和.framework
動(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)存嵌洼。
表現(xiàn)形式為 .dylib和.framework
注意:動(dòng)態(tài)庫(kù)只能蘋果使用,如果項(xiàng)目中使用了動(dòng)態(tài)庫(kù)不允許上架(如:jspatch)
a與.framework有什么區(qū)別封恰?
.a是一個(gè)純二進(jìn)制文件麻养,.framework中除了有二進(jìn)制文件之外還有資源文件。
.a文件不能直接使用诺舔,至少要有.h文件配合鳖昌,.framework文件可以直接使用。
.a + .h + sourceFile = .framework低飒。
建議用.framework.
接下來(lái)將以實(shí)例幫助大家創(chuàng)建一個(gè)自己的.framework
首先我們先創(chuàng)建一個(gè).workspace
創(chuàng)建完畢后许昨,再創(chuàng)建一個(gè)
.frmawork
將創(chuàng)建好的
frmawork
加入到workspace
在
framewrok
中可以封裝入自己需要封裝的內(nèi)容eg: 我在
StringUtils
中加入了一個(gè)測(cè)試方法
#import "StringUtils.h"
@implementation StringUtils
+ (NSString *)testString:(NSString *)string {
return [@"MQTestFramework: " stringByAppendingString:string];
}
@end
接下來(lái)進(jìn)行項(xiàng)目配置:
1、設(shè)置Build Setting參數(shù) 將Build Active Architecture only設(shè)置為NO
2褥赊、設(shè)置Build Setting參數(shù) Mach-O Type 為Static Library (配置靜態(tài)糕档、動(dòng)態(tài))
3、設(shè)置Build Setting參數(shù) 在Architectures下增加armv7s
4拌喉、在Build Phases中設(shè)置需要公開和需要隱藏的頭文件
5速那、將頭文件引入到MQTestFramwork
(自己SDK的頭文件)
6、
Command + B
運(yùn)行項(xiàng)目司光,在Product
中找到framework
framework使用
將封裝好的.framework
拉入需要使用的項(xiàng)目中
使用封裝好的功能
運(yùn)行: