Swift中@objc的使用
在Swift代码中,使用@objc修饰后的类型,可以直接供Objective-C调用
可以使用@objc修饰的类型:
- 未嵌套的类
- 协议
- 非泛型枚举(仅限于原始值为整形的类型)
- 类和协议中的属性和方法
- 构造器和析构器
- 下标
类
@objc class MyClass: NSObject {
}
Objective-C中所有的类都需要继承自NSObject,Swift中的类需要供Objective-C调用的时候,自然也需要显式继承自NSObject。
另外Swift中的类名可以使用中文命名,而Objective-C中的却只能使用ASCII码,在使用@objc时,需要指定Objective-C中使用的ASCII名称。
@objc(MyClass)
class 新的类: NSObject {
@objc(configData:)
func 赋值操作(名字: String) {
print("哈喽,\(名字)")
}
}
协议
@objc修饰协议与修饰类一样,需要注意的是,如果协议中有optional修饰的方法,就必须使用@objc来修饰
@objc protocol CounterDataSource {
optional func incrementForCount(count: Int) -> Int
optional var fixedIncrement: Int { get }
}
枚举
Swift中的枚举类型支持自定义类型。Objective-C中还是传统的枚举类型,必须使用整形原始值。Swift
网友评论