iOS靜態(tài)庫(kù)的開(kāi)發(fā)及項(xiàng)目中調(diào)試

簡(jiǎn)介

??iOS中,庫(kù)有兩種:靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù),靜態(tài)庫(kù)分為.a和.framework,動(dòng)態(tài)庫(kù)分為.dylib和.framework。其區(qū)別在于:鏈接靜態(tài)庫(kù)的時(shí)候,靜態(tài)庫(kù)會(huì)被完整地復(fù)制到可執(zhí)行文件中,被多次使用就會(huì)被多次復(fù)制;而鏈接動(dòng)態(tài)庫(kù)的時(shí)候,動(dòng)態(tài)庫(kù)不會(huì)被復(fù)制,程序運(yùn)行的時(shí)候,系統(tǒng)會(huì)將庫(kù)動(dòng)態(tài)加載到內(nèi)存中,供程序調(diào)用,且只加載一次,多個(gè)程序共用,節(jié)省內(nèi)存空間。
??需要注意的是,iOS系統(tǒng)不允許使用自定義動(dòng)態(tài)庫(kù),如果項(xiàng)目中使用到了自定義動(dòng)態(tài)庫(kù),那么是不可上傳到AppStore的。
??本文僅就靜態(tài)庫(kù)的開(kāi)發(fā)與調(diào)試做簡(jiǎn)要筆記,便于翻閱查詢。

靜態(tài)庫(kù)的開(kāi)發(fā)與調(diào)試

??靜態(tài)庫(kù)分為.a和.framework兩種形式,本文選取.framework的開(kāi)發(fā)來(lái)做記錄。
1.使用xcode新建項(xiàng)目,項(xiàng)目模板使用Framework&Library中的Cocoa Touch Framework,本文庫(kù)項(xiàng)目命名為“LVLibrary”如下圖所示:


framework模板.jpg

2.如果不需要系統(tǒng)默認(rèn)生成的頭文件,刪除即可。新建LVLibrary類,繼承自NSObject,添加一個(gè)拼接字符串的測(cè)試方法

+ (NSString *)joinString:(NSArray *)arr withSeparator:(NSString *)separator{
    if (arr.count == 0) {
        return nil;
    }
    
    NSMutableString * mStr = [[NSMutableString alloc] init];
    for (int i = 0; i < arr.count; i++) {
        [mStr appendString:arr[i]];
        if (separator && (i != arr.count - 1)) {
            [mStr appendString:separator];
        }
    }
    return mStr;
}

3.修改模板類型。使用該模板新建的項(xiàng)目,生成的庫(kù)默認(rèn)的是動(dòng)態(tài)庫(kù),需要修改。找到“Build Settings -> Linking -> Mack-O Type”將值由“Dynamic Library”修改為“Static Library”,如下圖所示:


修改framework類型.jpg

4.暴露頭文件。一個(gè)庫(kù)中可能會(huì)包含很多個(gè)類,根據(jù)需要將頭文件暴露出去。找到“Build Phases -> Headers”, 設(shè)置頭文件。默認(rèn)情況下,所有的頭文件都是在Project中,將需要暴露的頭文件,從Project拖動(dòng)到Public即可。


暴露頭文件.jpg

至此,庫(kù)工程的相關(guān)配置完畢。

接下來(lái),就是在項(xiàng)目進(jìn)行調(diào)試了。
1.新建項(xiàng)目,本文選取Single View App,命名為L(zhǎng)VLibraryDemo。
2.關(guān)閉庫(kù)工程(LVLibrary),然后將庫(kù)的工程文件“LVLibrary.xcodeproj”,拖動(dòng)到測(cè)試項(xiàng)目LVLibraryDemo中。


測(cè)試工程添加庫(kù)工程.jpg

添加完畢后,如果發(fā)現(xiàn)在測(cè)試工程中,庫(kù)工程沒(méi)法展開(kāi),也就是上圖中紅框左側(cè)沒(méi)有小三角,是因?yàn)閹?kù)工程(LVLibrary)沒(méi)有關(guān)閉,將之關(guān)閉即可。
3.配置測(cè)試工程。找到測(cè)試工程的Target Dependencies和Link Binary With Libraries,添加“LVLibrary”,如下圖:


配置測(cè)試工程.jpg
Target Dependencies&Link Binary With Libraries.png

4.修改搜索路徑。配置完上面的選項(xiàng)后,如果開(kāi)始使用庫(kù),可能會(huì)找不到頭文件的錯(cuò)誤,這時(shí)需要添加搜索路徑,將庫(kù)的頭文件的路徑加入到“Header Search Paths”中(可以將庫(kù)文件的某個(gè)頭文件直接拖動(dòng)過(guò)去,然后參數(shù)文件名,保留到最有一個(gè)文件夾即可),并且將路徑的搜索模式修改為recursive。


修改搜索路徑.jpg

至此,就可以在項(xiàng)目中開(kāi)發(fā)調(diào)試靜態(tài)庫(kù)了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容