这是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添加到类之间有什么不同?
最佳答案
弃用
在最新的Swift版本中,不再可以使用不带@objc
的NSObject
,因此不建议使用此答案。
原版的
@objc是类的前缀,以允许它们在ObjC中使用。如果您仅使用Swift进行交易,则没有必要。
同样,如果您的类继承自ObjC类,则前缀是不必要的。
关于ios - Swift类添加“@objc”的原因,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27558694/