組件化組件靜態(tài)庫(kù)動(dòng)態(tài)庫(kù)加載xib資源的區(qū)別

動(dòng)態(tài)庫(kù)形式:.dylib和.framework
靜態(tài)庫(kù)形式:.a和.framework
舉例demo:demoStatic


動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)的區(qū)別

1、動(dòng)態(tài)庫(kù)情況xib資源存在路徑

iOS在組件化過程中,一般來(lái)說(shuō),會(huì)把組件做成動(dòng)態(tài)庫(kù)的形式,也就是使用use_frameworks!

圖1
這種情況下存皂,無(wú)論你的xib放到Assets資源文件夾下還是Classes代碼文件夾下,系統(tǒng)都可以通過該組件的framework找到,如下圖
圖2

那么app運(yùn)行起來(lái)之后侧戴,當(dāng)app需要加載xib資源,會(huì)從demoStatic.framework這個(gè)動(dòng)態(tài)庫(kù)中尋找跌宛,如果xib資源放在了Assets文件夾下酗宋,那么系統(tǒng)應(yīng)該從demoStatic.bundle里面找xib資源;如果xib資源放在了Classes文件夾下疆拘,那么系統(tǒng)應(yīng)該直接從demoStatic.framework里面找(即demoStatic.bundle同級(jí)目錄)蜕猫。
下圖為demoStatic_Example.app的包內(nèi)容(靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)兩種情況,此時(shí)的xib資源都在Assets文件夾下入问,所以xib的資源都應(yīng)該在demoStatic.bundle里面找丹锹,只是不同情況demoStatic.bundle的位置不同)
圖3|動(dòng)態(tài)庫(kù)|Assets

圖3|靜態(tài)庫(kù)|Assets

圖3|動(dòng)態(tài)庫(kù)|Classes
但是如果在podspec文件中聲明s.static_framework = true,如下圖
圖4
說(shuō)明demoStatic組件允許打包成靜態(tài)庫(kù)芬失,這樣的話楣黍,demoStatic_Example.app包內(nèi)容的Frameworks路徑下就沒有demoStatic.framework,所以這種情況下棱烂,必須把xib資源放到Assets文件夾下(參考圖3|靜態(tài)庫(kù))[因?yàn)殪o態(tài)庫(kù)的組件中租漂,它的bundle路徑在demoStatic_Example.app下]。為了和圖片資源區(qū)分清楚颊糜,盡量在podSpec文件下指明路徑哩治,參考圖4的s.source_bundles
下面我寫了一個(gè)加載Assets文件夾下xib資源的方法

#import "NSBundle+Xib.h"

@implementation NSBundle (Xib)
///這是NSBundle的Category
/// 如果xib文件放到了Assets文件夾下使用這個(gè)方法獲取xib所在bundle(兼容靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù))
/// @param bundleName bundle名稱
+ (instancetype)yl_xibWithBundle:(NSString *)bundleName {
        
        
    if ([bundleName containsString:@".bundle"]) {
        bundleName = [bundleName componentsSeparatedByString:@".bundle"].firstObject;
    }
    NSBundle *lastBundle = nil;
    //沒使用framwork的情況下(靜態(tài)庫(kù))
    NSURL *associateBundleURL = [[NSBundle mainBundle] URLForResource:bundleName withExtension:@"bundle"];
    
    //使用framework形式(動(dòng)態(tài)庫(kù))
    if (!associateBundleURL) {
        associateBundleURL = [[NSBundle mainBundle] URLForResource:@"Frameworks" withExtension:nil];
        associateBundleURL = [associateBundleURL URLByAppendingPathComponent:bundleName];
        associateBundleURL = [associateBundleURL URLByAppendingPathExtension:@"framework"];
        associateBundleURL = [associateBundleURL URLByAppendingPathComponent:bundleName];
        associateBundleURL = [associateBundleURL URLByAppendingPathExtension:@"bundle"];
        
    }
    
    lastBundle = [NSBundle bundleWithURL:associateBundleURL];
    
    return lastBundle;

}
@end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末衬鱼,一起剝皮案震驚了整個(gè)濱河市业筏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鸟赫,老刑警劉巖蒜胖,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異抛蚤,居然都是意外死亡台谢,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門岁经,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)朋沮,“玉大人,你說(shuō)我怎么就攤上這事缀壤》兀” “怎么了纠亚?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)骑脱。 經(jīng)常有香客問我菜枷,道長(zhǎng),這世上最難降的妖魔是什么叁丧? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任啤誊,我火速辦了婚禮,結(jié)果婚禮上拥娄,老公的妹妹穿的比我還像新娘蚊锹。我一直安慰自己,他們只是感情好稚瘾,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布牡昆。 她就那樣靜靜地躺著,像睡著了一般摊欠。 火紅的嫁衣襯著肌膚如雪丢烘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天些椒,我揣著相機(jī)與錄音播瞳,去河邊找鬼。 笑死免糕,一個(gè)胖子當(dāng)著我的面吹牛赢乓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播石窑,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼牌芋,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了松逊?” 一聲冷哼從身側(cè)響起躺屁,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎经宏,沒想到半個(gè)月后楼咳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡烛恤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了余耽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缚柏。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖碟贾,靈堂內(nèi)的尸體忽然破棺而出币喧,到底是詐尸還是另有隱情轨域,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布杀餐,位于F島的核電站干发,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏史翘。R本人自食惡果不足惜枉长,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望琼讽。 院中可真熱鬧必峰,春花似錦、人聲如沸钻蹬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)问欠。三九已至肝匆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間顺献,已是汗流浹背旗国。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留滚澜,地道東北人粗仓。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像设捐,于是被迫代替她去往敵國(guó)和親借浊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容