[英]Swift class add “@objc” for why
這是Swift教程的鏈接 。
我讀了協議部分,我知道協議是否用@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
w / o NSObject
因此不贊成使用此答案。
原版的
@objc是類的前綴,以允許它們在ObjC中使用。 如果您僅使用Swift進行交易,則沒有必要。
同樣,如果您的類繼承自ObjC類,則前綴是不必要的。
例如, #selector
由Obj-c擁有,
在迅速的,我們將使用#selector
在.addTarget
或.target
對象。 在那里,我們應該在@objc
之前添加定位方法。
例:
@objc func dummy(_ sender: UIButton) {
print("xxx")
}
上面的方法將在UIButton的目標中使用
dummyButton.addTarget(self, action: #selector(self. dummy(_:)), for: .touchUpInside)
這就是為什么我們在@objc
中使用@objc
作為前綴。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.