OC、Swift混編并使用pod模塊化的那些坑與解決方案

  • 如果編譯時(shí)自動(dòng)生成的Swift.h報(bào)找不到<Product/Product.h>,把<Product/Product.h>改成<Product/Product-umbrella.h>就好了,Xcodebug。詳見(jiàn)這個(gè)issue
  • 可以在pod 的demo項(xiàng)目里配依賴pod的:path,避免從網(wǎng)絡(luò)拉取,加快迭代速度
  • pod spec里resourceresource-bundle是有區(qū)別的。resource-bundle會(huì)在當(dāng)前改pod的bundle里再加一個(gè)bundle,個(gè)人認(rèn)為不是特別有必要。
  • 如果只需要一個(gè)模塊里一個(gè)子模塊,就用在所需模塊里定義subspec(比如App Extension里不能有對(duì)UIApplication.sharedApplication的依賴,另起一個(gè)pod有感覺(jué)沒(méi)必要)
  • 用Swift時(shí)NCClassFromString的參數(shù)要用 bundle.className, bundle就是pod名或者主項(xiàng)目名,因?yàn)檫@個(gè)原因感覺(jué)router的action最好使用OC實(shí)現(xiàn)
  • 有時(shí)候自動(dòng)生成的<Product>-Swift.h會(huì) #import <Product/Product.h>,然而編譯這個(gè)文件的時(shí)候Product模塊還沒(méi)編譯完,直接報(bào)錯(cuò),報(bào)錯(cuò)了后把這一行刪了就好,目前沒(méi)找到更好的解決方案。。。。
  • 有些pod有對(duì)靜態(tài)庫(kù)的依賴,注意 在source_filesvendored_libraries 包括靜態(tài)庫(kù),并且多加一句s.pod_target_xcconfig = { 'OTHER_LDFLAGS' => '"-ObjC"' }
  • performSelector所對(duì)應(yīng)的函數(shù)一定要有返回值……不然會(huì)崩……
  • 同一個(gè)pod里Swift可以直接調(diào)用OC,但是OC調(diào)用Swift時(shí)需要把權(quán)限設(shè)為public
  • 如果所依賴的pod里有vendored_framework且該framework沒(méi)有modulemap且又要在swift里調(diào)用。。。乖乖寫(xiě)bridge header里吧。。。
最后編輯于
?著作權(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),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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