这是Swift教程的a link .
我读了协议部分,我知道协议是用@objc标记的:
@objc protocol CounterDataSource {
optional func incrementForCount(count: Int) -> Int
optional var fixedIncrement: Int { get }
}
这意味着该协议用于指定可选要求,并且只能由类采用
但教程没有说为什么类需要用@objc标记?
@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添加到类之间有什么不同?
1 回答
Deprecation
在最新的Swift版本中不再可能使用
@objc
w / oNSObject
,因此不推荐使用此答案 .Original
@objc以类为前缀,允许它们在ObjC中使用 . 如果你纯粹是在Swift中进行交易,那就没必要了 .
此外,如果您的类继承自ObjC类,则前缀是不必要的 .