在Swift代码中,使用@objc修饰后的类型,可以直接供Objective-C调用。
可以使用@objc修饰的类型有以下几种:
1、未嵌套的类
2、协议
3、非泛型枚举(仅限于原始值为整形的类型)
4、类和协议中的属性和方法
5、构造器和析构器
6、下标
注意点: Objective-C中所有的类都继承自NSObjc,在Swift中的类需要供Objective-C调用的时候,也必须显式的继承NSObject。当然,随便继承一个OC中的类都可以,反正他们都继承自NSObject。
小细节: Swift在某些方面非常的随意亲切,比方说类名,Swift可以使用中文命名,但OC却只能使用ASCII码,在使用@objc的时候,需要指定OC中指定的ASCII码的名称,举个小例子如下
修饰协议: @objc修饰协议与修饰类一样,需要注意的是,如果协议中有optional修饰的方法,就必须使用@objc来修饰
修饰枚举: Swift中的枚举类型功能增强了不少。OC中还是传统的枚举类型,必须使用整型作为枚举值。Swift中的枚举如果要被@objc修饰,那么就必须满足原始值为整型的限制条件。
@objc protocol CounterDataSource {
optional func incrementForCount(count: Int) -> Int
optional var fixedIncrement: Int { get }
}