iOS 項(xiàng)目嵌套子工程(項(xiàng)目嵌套動(dòng)態(tài)庫)

在iOS的項(xiàng)目開發(fā)中,項(xiàng)目會(huì)隨著時(shí)間不斷變大,項(xiàng)目的結(jié)構(gòu)會(huì)變得越來越復(fù)雜,編譯速度也越來越慢,這時(shí),就需要對(duì)項(xiàng)目進(jìn)行優(yōu)化。而對(duì)于項(xiàng)目結(jié)構(gòu)優(yōu)化的一種方式,就是使用動(dòng)態(tài)庫或靜態(tài)庫來優(yōu)化項(xiàng)目的結(jié)構(gòu)。
使用動(dòng)態(tài)庫(靜態(tài)庫)對(duì)項(xiàng)目進(jìn)行優(yōu)化,可以是在項(xiàng)目中創(chuàng)建子項(xiàng)目,也可以創(chuàng)建并列的項(xiàng)目,然后建立項(xiàng)目依賴。
現(xiàn)在,我們首先學(xué)習(xí)項(xiàng)目中創(chuàng)建子工程,對(duì)項(xiàng)目結(jié)構(gòu)進(jìn)行優(yōu)化。

1、創(chuàng)建一個(gè)項(xiàng)目母工程
首先,創(chuàng)建一個(gè)項(xiàng)目母工程,我們命名為ProjectDemo。
2、創(chuàng)建項(xiàng)目子工程——?jiǎng)討B(tài)庫
使用xcode再次創(chuàng)建一個(gè)新工程,選擇動(dòng)態(tài)庫文件進(jìn)行創(chuàng)建。命名為LoginLib。

image.png

注意:在創(chuàng)建的時(shí)候,要將該動(dòng)態(tài)庫工程添加進(jìn)我們上一步創(chuàng)建的母工程里面。
image.png

創(chuàng)建完成之后,項(xiàng)目的結(jié)構(gòu)層次應(yīng)該是下圖所示的樣式:
image.png

3、創(chuàng)建動(dòng)態(tài)庫中的內(nèi)容文件、image.bundle以及PCH文件
LoginLib登錄模塊,主要有登錄、注冊、忘記密碼以及彈出框幾個(gè)文件。
image.png

PCH文件主要定義一些顏色、宏定義等等。這里面我主要定義了動(dòng)態(tài)庫的bundle和圖片的路徑。具體PCH文件如何創(chuàng)建使用,參考我的另一篇文章《iOS PCH文件的添加和使用》。
image.png

// 該動(dòng)態(tài)庫的bundle
#define loginBundle [NSBundle bundleWithIdentifier:@"com.fifedu.LoginLib"]

// 該動(dòng)態(tài)庫里面圖片的路徑
#define imagePath(imgName) [[loginBundle resourcePath] stringByAppendingPathComponent:[@"image.bundle" stringByAppendingPathComponent:imgName]]

image.bundle文件主要用于存放需要用到的圖片以及其他資源文件。
image.bundle的創(chuàng)建:新建文件,選擇“Resource”下的“settingsBundle”文件。刪除里面無用的配置文件即可。

image.png

4、內(nèi)容文件加載xib文件問題
平時(shí),我們加載xib默認(rèn)是加載mainBundle里面的xib,而動(dòng)態(tài)庫里面的xib加載便不能使用mainBundle了,要指定加載哪個(gè)bundle里面的xib文件了。
在動(dòng)態(tài)庫中每一個(gè)需要加載xib文件的.m文件里加上一段代碼:

- (instancetype)init {
    self = [super initWithNibName:@"FiFLoginController" bundle:loginBundle];
    if (self) {
        return self;
    }
    return self;
}

圖片的使用也是需要指定圖片所在的bundle才可以。

// 可以查看PCH文件中的宏定義
self.imgView.image = [UIImage imageWithContentsOfFile:imagePath(@"否認(rèn)三連.jpg")];

而xib文件中的圖片要加上圖片的相對(duì)路徑才可以

image.png

5、動(dòng)態(tài)庫的配置
TARGETS -Build Settings - Build Active Architchture Only 設(shè)置為No
TARGETS->Build Settings->Other Linker Flags,添加 -ObjC
TARGETS->Build Settings->Enable Bitcode 設(shè)置為No
Edit scheme-Run-Build Configuration設(shè)置為Release
設(shè)置 Build Configuration

設(shè)置公開頭文件和資源文件:
image.png

并且在LoginLib.h文件中加入需要公開的頭文件
image.png

6、母項(xiàng)目中引用動(dòng)態(tài)庫文件
引用動(dòng)態(tài)庫文件

7、母項(xiàng)目使用動(dòng)態(tài)庫類
引入頭文件,直接使用即可
image.png

最后編輯于
?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 僅以方便自己查閱記錄前言1.靜態(tài)庫和動(dòng)態(tài)庫有什么異同?靜態(tài)庫:鏈接時(shí)完整地拷貝至可執(zhí)行文件中,被多次使用就有多份冗...
    190CM閱讀 4,526評(píng)論 0 4
  • 前言 1.靜態(tài)庫和動(dòng)態(tài)庫有什么異同? 靜態(tài)庫:鏈接時(shí)完整地拷貝至可執(zhí)行文件中,被多次使用就有多份冗余拷貝。利用靜態(tài)...
    Ly夢k閱讀 8,750評(píng)論 3 18
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,675評(píng)論 1 32
  • 報(bào)名方式: 掃描下方二維碼,回復(fù)“早教外賣+姓名+手機(jī)號(hào)” 我們會(huì)從報(bào)名的寶寶中選出5組家庭免費(fèi)體驗(yàn) 劃重點(diǎn)——免...
    叮咚_a356閱讀 262評(píng)論 0 0
  • 日課77感悟:為了自己想過的生活,勇于放棄一些東西。這個(gè)世界沒有公正之處,你也永遠(yuǎn)得不到兩全之計(jì)。若要自由,就得犧...
    做自己o與眾不同閱讀 194評(píng)論 0 1

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