注册

iOS swift与oc混编问题解决

1、手动创建桥接文件

08dce2373f311b8cb32f5978bfdf2fad.png

516dc17e38b8492a5a7bbbcdbbed7a98.png

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

a6df96ef3ccd109680fd81761c92280b.png

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

3、OC文件中调用swift文件,需要导入头文件,这个头文件叫啥呢?

一般为项目名称-swift.h

当然也可查看,地方在这里

cfde84fd95ae856b8fd34066cd34f8c0.png

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文件,运行调试时缓存之前数据,如下图
81772634b0e60351fb266d2f758c3f99.png

链接:https://www.jianshu.com/p/83f70b366ff4



0 个评论

要回复文章请先登录注册