我瞭解「@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