@objc的使用
知識點: 在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(MyClass)
class 我的類: NSObject {
@objc(greeting:)
func 問候(名字: String) {
print("你好 \(名字)")
}
}
修飾協議: @objc修飾協議與修飾類一樣,需要注意的是,如果協議中有optional修飾的方法,就必須使用@objc來修飾
@objc protocol CounterDataSource {
optional func incrementForCount(count: Int) -> Int
optional var fixedIncrement: Int { get }
}
修飾枚舉: Swift中的枚舉類型功能增強了不少。OC中還是傳統的枚舉類型,必須使用整型作爲枚舉值。Swift中的枚舉如果要被@objc修飾,那麼就必須滿足原始值爲整型的限制條件。