在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。

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

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

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

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

// 該動(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”文件。刪除里面無用的配置文件即可。

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ì)路徑才可以

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è)置公開頭文件和資源文件:

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

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

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