聲明:以下操作都只針對(duì)古老的Object-C項(xiàng)目矗晃,swift項(xiàng)目有命名空間看疙。
之前有朋友遇到需要合成兩個(gè)APP,由于項(xiàng)目太大浦旱,需要解決命名沖突宇色,而且時(shí)間不夠,于是給提供了一個(gè)快速解決沖突的方法:動(dòng)態(tài)庫(kù)颁湖。
做法:
1宣蠕、保留宿主app,將另一個(gè)app做成動(dòng)態(tài)庫(kù)甥捺,暴露唯一入口抢蚀。
2、檢查NSClassFrom镰禾、將反射引用替換成直接引用皿曲,一般不會(huì)太多唱逢。
3、處理圖片沖突屋休,建議用bundle包坞古,宏定義子app的 "UIimage imageNamed:"方法即可。
注意:
1博投、 系統(tǒng)會(huì)提示 Class "xxxxx" is implemented in both "xxxxx"绸贡、"xxxxx",直接忽視毅哗,這是說(shuō)明 xxxxx 這個(gè)類(lèi)在兩個(gè)執(zhí)行文件里面都存在听怕,但我們?cè)诰幾g的時(shí)候已經(jīng)確定了使用哪一個(gè)class(#import "xxxxx" 導(dǎo)入的),所以不會(huì)有問(wèn)題虑绵。
2尿瞭、app內(nèi)的執(zhí)行文件都加在完成后會(huì)把所有的執(zhí)行文件中的類(lèi)注冊(cè)到一張表中,所以通過(guò)反射會(huì)導(dǎo)致同名class選用出現(xiàn)混亂翅睛,也就有了步驟2的操作声搁。