基于xcode 11
在oc中调用swift
1. 在oc项目中创建一个swift文件,会提示是否创建桥接文件。这个桥接文件是用于swift调用oc的,可以创建,若不创建则后续手动创建也是可以的。
2. 在Build Settings中找到Object-C Generated interface Header Name,这里可以自定义用于引入的swift头文件名称,一般格式为:Name-Swift.h,默认是:Product Module Name-Swift.h,若修改了文件名称,需重新编译才可以识别到。注意,当工程名称中有横线时,会被自动转换为下划线。
3. 在需要调用的地方导入Name-Swift.h文件,然后开始调用swift中的类/方法。对应要在oc中调用的方法需要在方法前加上“@objc”。若swift文件中新增了方法,则需要重新编译一次,之后才可以调用。只要import Name-Swift.h,不需要每个swift文件都引入。
4. Name-Swift.h中其实是xcode自动将swift转换之后的oc头文件,包含所有可调用方法/属性的接口文件,可以点进去查看。在编译时会生成/修改,所以在第2、3步中的修改需要编译之后才会生效。
在swift中调用oc
1. 需生成一个Bridging-Header.h的桥接文件,在创建文件时系统会提示生成或者可以自己配置。自己配置时,1.1 先生成一个文件,名字可以自定义,建议按照通用模式命名,方便查找和维护;1.2 在Build Settings中找到Objective-C Bridging Header,并写入文件名称(需包含文件路径),如“工程名/Bridging-Header.h”。
2. 在桥接文件中引入要在swift中调用的oc类的头文件,之后就可以在swift类中开始调用oc中的类/方法。