之前的工程代码都是用OC的,一直想转成swift的,但是感觉全转不太靠谱,所以决定一部分一部分慢慢转,所以需要用到OC和Swift代码混编。
1.创建swift代码。
@objc public class XX : XX
{
}
@objc ,public 最好都加上,然后子类也加上比如继承NSObject
然后就会问你是否创建header文件

选择是就行了,然后自动创建一个$(Project_Name)-Bridging-Header.h的文件,$(Project_Name)默认是工程名字,但是也可以修改。如果你选择了否或者不小心把这个文件删了怎么办了。
第一种就是:在SWIFT_OBJC_BRIDGING_HEADER将其选项删除,然后新建的时候就会又提示让你建立。

第二种就是:建立一个新的文件然后在SWIFT_OBJC_BRIDGING_HEADER,将路径输入进去。
这个文件的作用就是当swift需要使用OC代码的时候在SWIFT_OBJC_BRIDGING_HEADER文件将OC的头文件导入进去。
2.xcode自动帮你创建了$(Project_Name)-Swift.h文件
这个自动帮你创建好了。然后你在OC类里面#import这个文件以后就能直接使用Swift的代码了。
3.工程的一些配置
Packaging下面的Defines Module设置为YES
Swift Compiler - Code Generation下面的Objective-C Bridging Header,Objective-C Generated Interface Header Name比较重要的两个路径配置选项
一个莫名其妙的错误:
error:opening import file for module 'Swift':Not a directory
我只把Framework Search Path里面的libxml2去了就编译通过了。stackoverflow里面的完整答案是:
1:简化这个Framework Search Path只留下
$(inherited)
$(SRCROOT)
2:将libxml2去了。
网友评论