Swift中@objc的使用

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

你可能感兴趣的:(Swift中@objc的使用)