OC和Swift混编Pod引入第三方库的问题
问题描述:Swift应用OC 的开源框架,需要创建一个桥接头文件,问题就出在这个看似简单,却隐藏着一个巨大的问题:一切都按部就班的在桥接头文件中引入了OC 头文件,但是xcode总是报错找不到该文件。接下来详细描述问题和原因。
1.为了在Swift项目中引入OC 开源框架,我使用了pod工具引入。然后下图:
2.之后创建桥接文件:
3.然后就是在配置文件中设置桥接文件路径:
4.到这里就看似完成了,一切都很简单。但是,当编译时问题就来了,如下图:
原因是找不到该文件。可是明明使用了pod工具引入了啊。(注:百度清一色的都是以上步骤,该问题并未在百度查询到问题原因和解决方案。所谓博客恐怕都是出自一人)
5.在作了大量的测试和摸索后,终于得意解决。问题的根本原因就是我之前用pod引入了Swift开源框架,为了方便,在引入OC开源框架时我同样是使用了pod工具。我们回看第一步
Swift框架:
pod 'SnapKit', '~> 0.30.0.beta1'
pod 'Alamofire', '~> 3.4.0'
pod 'SwiftyJSON', '~> 2.3.2'
OC框架:
pod 'SVProgressHUD'
pod 'MJRefresh'
同样还有一句话:
use_frameworks!
没错,简单的说,在OC开发时并不用使用该语句,但是Swift开发时使用pod工具就需要加上这句话。这就导致了OC 和 Swift公用同一个项目工程中的pod时造成了以上显示的错误,即使其他步骤都没有错,但是错误原因就是找不到文件。
至于为什么会这样,我联想到了之前看到过的一篇文章好像是有这么一句话(记不太清楚了)OC是动态语言,而Swift是静态语言,这就是为什么两者在使用pod时关于这句话是否要加上的浅显原因(其实深入的东西就需要接着百度了)
既然原因找到了,解决它就好办了,我们只要把这两种语言的开源框架分开管理就可以了。。。。