基础的Swift调用OC
在你的项目了新建一个OC的文件,Xcode就会自动提醒你创建桥接文件
然后在桥接文件里导入OC的头文件。switf就可以用了
关于OC调用Swift
需要在Swift的方法或者变量前边加上 @objc
如下
@objc static func isBlockData(_ dateString:String?) -> String {
if dateString == nil || dateString == "" || dateString!.isEmpty || dateString?.count == 0 {
return "--"
}
return dateString!
}
如果整个Swift的类都要暴露给OC,就给类名前边加上 @objcMembers
如下
@objcMembers class SwiftTool: NSObject {
static func isBlockData(_ dateString:String?) -> String {
return ""
}
}
然后,在OC的文件里引用头文件,这个头文件看不到。是你的项目名加-Swift.h,也就是#import "xxx-Swift.h"
也可以在这里看
WeChat480f8da5955dc3ee2112ce53d1063157.jpg
额外说一个枚举,OC和Switf的枚举不太一样,所有想要在OC使用Swift的枚举,这个枚举就需要是Int类型,不然会报错
@objc enum FontEnumType:Int {
case regular_ub
case medium_ub
case bold_ub
case light_ub
func fontEnumName() -> String {
switch self {
case .regular_ub:
return "Ubuntu"
case .medium_ub:
return "Ubuntu-Medium"
case .bold_ub:
return "Ubuntu-Bold"
case .light_ub:
return "UbuUbuntu-Lightntu"
}
}
}
最后 敲黑板 重点 OC调用Swift的时候 可能出现的OC和Swift互相引用头文件的情况
比如我在Swift的桥接文件里引用了一个OC文件
WeChat3c02fb00d8dbf83046cda4ccb1a096bb.jpg
然后在OC的这个文件的.h里再用Swift的类 就会报错
image.png
解决办法是 先在OC的.h文件中,前置声明一下Swift的类@class SwitfClass;
WeChat63242ae3b91a65cd0c5e646b4d475ed1.jpg
然后在OC的.m文件,导入xxx-Swift.h的头文件就可以了