SDK開發(fā):SDK之間相互依賴仔燕,文件加載不完全問題(項(xiàng)目中NSClassFromString方法找不到文件)

起初在做SDK開發(fā)的時(shí)候造垛,都是單個(gè)SDK,一套邏輯走完晰搀,生成的SDK用起來完全沒有問題五辽,今天在接手公司上一個(gè)復(fù)雜SDK項(xiàng)目的時(shí)候,牽扯到了SDK之間的聯(lián)系外恕,直接導(dǎo)入工程中之后杆逗,在一個(gè)SDK文件中加載另一個(gè)的時(shí)候,總是找不到文件鳞疲,具體如下:

static RoRoSDKInterface *roroSDKInterface;
+ (RoRoSDKInterface *)getInstance {
    if (roroSDKInterface == nil){     
        Class c = NSClassFromString(@"RoRoFunction");
        roroSDKInterface = [[c alloc] init];
    }
    return roroSDKInterface;
}

如文所見罪郊,此方法是個(gè)單例類,是在一個(gè)SDK中的文件尚洽,這里想用NSClassFromString這個(gè)方法映射悔橄,創(chuàng)建一個(gè)RoRoFunction類,但問題就出在這:RoRoFunction這個(gè)文件是在另一個(gè)SDK文件中的腺毫,如此一來癣疟,在創(chuàng)建的時(shí)候,這個(gè)Class總是為nil潮酒,百思不得姐睛挚,google吧。

得解如此:

NSClassFromString是一個(gè)很有用的東西急黎,尤其在進(jìn)行iPhone toolchain的開發(fā)上扎狱。正常來說侧到,

id myObj = [[NSClassFromString(@"MySpecialClass") alloc] init];

id myObj = [[MySpecialClass alloc] init];

是一樣的。但是淤击,如果你的程序中并不存在MySpecialClass這個(gè)類床牧,下面的寫法會(huì)出錯(cuò),而上面的寫法只是返回一個(gè)空對(duì)象而已遭贸。
因此戈咳,在某些情況下,可以使用NSClassFromString來進(jìn)行你不確定的類的初始化壕吹。
NSClassFromString的好處是:
1 弱化連接著蛙,因此并不會(huì)把沒有的Framework也link到程序中。
2 不需要使用import耳贬,因?yàn)轭愂莿?dòng)態(tài)加載的踏堡,只要存在就可以加載。因此如果你的toolchain中沒有某個(gè)類的頭文件定義咒劲,而你確信這個(gè)類是可以用的顷蟆,那么也可以用這種方法。

那么應(yīng)該是這樣的:既然是可以返回nil腐魂,二我的工程中單例也返回nil帐偎,原因可能是工程中沒有成功導(dǎo)入"RoRoFunction"這個(gè)類,于是驗(yàn)證:

--- 在viewController中導(dǎo)入#import <roro_yk/RoRoFunction.h> 沒有問題蛔屹,這個(gè)我工程中的頭文件削樊,大家可以不用在意;
--- 在viewDidLoad中也能寫出如下代碼:

[[RoRoFunction alloc] init];

那么就不是沒有導(dǎo)入這個(gè)類的原因了兔毒。

那么我想既然是工程中有文件漫贞,有沒有可能是在調(diào)用方法的時(shí)候還沒有加載完成呢,于是我百度如何加載framework文件育叁,得到方法如下:
圖1

在工程的targets下迅脐,給other linker flags加一個(gè)字段,-all_load豪嗽。
于是問題就瞬間解決了谴蔑,真是輕松加愉快!j侵琛树碱!

感謝奮斗的小黃鳥的回復(fù)

第二個(gè)方法---給other linker flags加一個(gè)字段-ObjC也是可以的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市变秦,隨后出現(xiàn)的幾起案子成榜,更是在濱河造成了極大的恐慌,老刑警劉巖蹦玫,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赎婚,死亡現(xiàn)場(chǎng)離奇詭異刘绣,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)挣输,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門纬凤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人撩嚼,你說我怎么就攤上這事停士。” “怎么了完丽?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵恋技,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我逻族,道長(zhǎng)蜻底,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任聘鳞,我火速辦了婚禮薄辅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘抠璃。我一直安慰自己站楚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布鸡典。 她就那樣靜靜地躺著源请,像睡著了一般枪芒。 火紅的嫁衣襯著肌膚如雪彻况。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天舅踪,我揣著相機(jī)與錄音纽甘,去河邊找鬼。 笑死抽碌,一個(gè)胖子當(dāng)著我的面吹牛悍赢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播货徙,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼左权,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了痴颊?” 一聲冷哼從身側(cè)響起赏迟,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蠢棱,沒想到半個(gè)月后锌杀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體甩栈,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年糕再,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了量没。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡突想,死狀恐怖殴蹄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情猾担,我是刑警寧澤饶套,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站垒探,受9級(jí)特大地震影響妓蛮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜圾叼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一蛤克、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧夷蚊,春花似錦构挤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至箱歧,卻和暖如春矾飞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背呀邢。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工洒沦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人价淌。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓申眼,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蝉衣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子括尸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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