首页 文章

Swift类添加“@objc”为什么

提问于
浏览
1

这是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 回答

  • 5

    Deprecation

    在最新的Swift版本中不再可能使用 @objc w / o NSObject ,因此不推荐使用此答案 .

    Original

    @objc以类为前缀,允许它们在ObjC中使用 . 如果你纯粹是在Swift中进行交易,那就没必要了 .

    此外,如果您的类继承自ObjC类,则前缀是不必要的 .

相关问题