iOS混编问题解决
2019-03-29 本文已影响113人
wg刚
1、手动创建桥接文件


2、桥接文件中导入 通过cocoapods pod下来的第三方OC文件,报找不到

在target—>Build Setting里找到search Paths,双击User Header Search Paths后面的空白处,设置目录路径为${SRCROOT}
。
${SRCROOT}后边选择recursive递归根目录下的所有文件。

3、OC文件中调用swift文件,需要导入头文件,这个头文件叫啥呢?
一般为项目名称-swift.h
当然也可查看,地方在这里

4、Swift中 字符串转化为Class怎么做
在Swift中由于命名空间的存在,我们可以用下面的方法进行转化。
func getClass(stringName: String) -> Class {
guard let nameSpage = Bundle.main.infoDictionary!["CFBundleExecutable"] as? String else {
print("没有命名空间")
return
}
guard let childVcClass = NSClassFromString(nameSpage + "." + vcName) else {
print("没有获取到对应的class")
return
}
guard let childVcType = childVcClass as? UIViewController.Type else {
print("没有得到的类型")
return
}
//根据类型创建对应的对象
let vc = childVcType.init()
return vc
}
5、修改pod文件,运行调试时缓存之前数据,如下图

目前还没找到好的解决办法,有解决的麻烦给个方案。现在是clean一下解决的,但是感觉很麻烦。