swift中的@objc
生活随笔
收集整理的這篇文章主要介紹了
swift中的@objc
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Argument of '#selector' refers to instance method 'gotoPage()' that is not exposed to Objective-C
Add '@objc' to expose this instance method to Objective-C
使用#selector發生錯誤提示:實例方法gotoPage沒有暴露給Objective-C,請添加@objc暴露實例方法給Objective-C
解決辦法有兩種(顯式暴露Swift API):
第一種:根據提示中的描述在方法前添加@objc,如下
@objc func gotoPage() {}
第二種:使用@objcMembers標記整個類或struct,如下
@objcMembers class ViewController: UIViewController {}
如果不需要暴露的方法使用@nonobjc標記
?
Swift 4之后,NSObject子類不再自動添加@objc ,只有以下這幾種情況才會隱式推斷為@objc:
第一種:重寫@objc的聲明
class?Super?{@objc?func?foo()?{?} }class?Sub?:?Super?{/*?推斷為?@objc?*/override?func?foo()?{?} }第二種:實現@objc協議要求的聲明
@objc?protocol?MyDelegate?{func?bar() }class?MyClass?:?MyDelegate?{/*?推斷為?@objc?*/func?bar()?{?} }?
?
第三種:聲明中屬性銀行了@objc,例如@IBAction,@IBOutlet和@NSManaged
?
?
?
?
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的swift中的@objc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Swift中的集合类之数组
- 下一篇: Block相关内容梳理