-
@objc
OC 是基于運(yùn)行時速挑,遵循了 KVC 和動態(tài)派發(fā)馁蒂,而 Swift 為了追求性能,在編譯時就已經(jīng)確定,而不需要在運(yùn)行時才確定胚泌。在 Swift 類型文件中,為了解決這個問題毙芜,需要暴露給 OC 使用的任何地方(類撤逢,屬性,方法等)的生命前面加上 @objc 修飾符
如果用 Swift 寫的 class 是繼承 NSObject 的話寓辱, Swift 會默認(rèn)自動為所有非 private 的類和成員加上@objc艘绍,但在swift4以后,系統(tǒng)就不會自動添加@objc了
在Swift中秫筏,我們在給button添加點(diǎn)擊事件時诱鞠,對應(yīng)的點(diǎn)擊事件的觸發(fā)方法就需要用@objc來修飾
-
@objcMembers
如果在類前加上 @objcMembers挎挖,那么它、它的子類航夺、擴(kuò)展里的方法都會隱式的加上 @objc
-
dynamic
如果需要和 OC 里動態(tài)調(diào)用相同的運(yùn)行特性的話肋乍,需要使用的修飾符是 dynamic
在Swift中,要是想KVO來監(jiān)聽屬性的話敷存,該屬性必須用@objc和dynamic來修飾
-
@discardableResult
有時候墓造,我們不需要獲取方法的返回值,但是不拿返回值xCode會提示一個警告锚烦,使用這個關(guān)鍵字修飾方法觅闽,可以避免這個警告
-
訪問權(quán)限關(guān)鍵字
open > public > internal > fileprivate > private
參考文章:@objc 和 dynamic
Swift - Swift4新特性介紹3(Substring、swap涮俄、@objc)