我了解“@objc”属性对于协议的作用。我不明白的是为什么它被添加到类,如下面的例子:需要澄清Swift中的“@objc class”
@objc protocol CounterDataSource {
optional func incrementForCount(count: Int) -> Int
optional var fixedIncrement: Int { get }
}
@objc class Counter {
var count = 0
var dataSource: CounterDataSource?
func increment() {
if let amount = dataSource?.incrementForCount?(count) {
count += amount
} else if let amount = dataSource?.fixedIncrement {
count += amount
}
}
}
下面是它在苹果的斯威夫特文件指出:
还要注意@objc协议只能由类来采用,而不能通过结构或枚举来采用。如果您将协议标记为@objc以指定可选需求,则只能将该协议应用于类类型。
没有“@objc类..”的解释,只有“@objc协议”。
这解释了很多,但我仍然对它的目的感到好奇。它似乎是将它暴露给objective-c运行时,但为什么我需要如果我在快速编码? –
虽然Swift很棒,但能够从Obj-C代码中调用/访问Swift类和类型真的很有价值。 – jtbandes