OC、Swift混编并使用pod模块化的那些坑与解决方案
作者:
此题无解灬 | 来源:发表于
2016-08-16 13:45 被阅读1098次
- 如果编译时自动生成的
Swift.h
报找不到<Product/Product.h>
,把<Product/Product.h>
改成<Product/Product-umbrella.h>
就好了,Xcode
的bug
。详见这个issue
- 可以在pod 的demo项目里配依赖pod的
:path
,避免从网络拉取,加快迭代速度
- pod spec里
resource
和resource-bundle
是有区别的。resource-bundle
会在当前改pod的bundle里再加一个bundle,个人认为不是特别有必要。
- 如果只需要一个模块里一个子模块,就用在所需模块里定义subspec(比如App Extension里不能有对UIApplication.sharedApplication的依赖,另起一个pod有感觉没必要)
- 用Swift时NCClassFromString的参数要用
bundle.className
, bundle
就是pod名或者主项目名,因为这个原因感觉router的action最好使用OC实现
- 有时候自动生成的
<Product>-Swift.h
会 #import <Product/Product.h>
,然而编译这个文件的时候Product
模块还没编译完,直接报错,报错了后把这一行删了就好,目前没找到更好的解决方案。。。。
- 有些pod有对静态库的依赖,注意 在
source_files
和vendored_libraries
里 都 包括静态库,并且多加一句s.pod_target_xcconfig = { 'OTHER_LDFLAGS' => '"-ObjC"' }
-
performSelector
所对应的函数一定要有返回值……不然会崩……
- 同一个pod里
Swift
可以直接调用OC
,但是OC
调用Swift
时需要把权限设为public
- 如果所依赖的pod里有vendored_framework且该framework没有modulemap且又要在swift里调用。。。乖乖写bridge header里吧。。。
本文标题:OC、Swift混编并使用pod模块化的那些坑与解决方案
本文链接:https://www.haomeiwen.com/subject/mospsttx.html
网友评论