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

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

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