![](/img/trans.png)
[英]Non-'@objc' method 'paymentAuthorizationViewControllerDidFinish' does not satisfy requirement of '@objc' protocol
[英]Non-'@objc' method does not satisfy requirement of '@objc' protocol
我已将以下内容放入 Playground 以尝试理解这一点,但我没有这样做:
import Foundation
@objc protocol Sample {
var value: Int { get set }
func increase()
func decrese()
}
extension Sample {
func increase() {
value += 1
}
func decrease() {
value -= 1
}
}
class Test: Sample {
var value: Int = 0
}
错误出现在Test
的class
声明旁边:
非'@objc' 方法'increase()' 不满足'@objc' 协议'Sample' 的要求
如果我在类中重新声明increase()
和decrease()
,则警告将被静音。 或者,如果我从协议中删除声明。 有人可以解释一下吗?
编辑
我确实需要一个 Objective-C 类来符合这个协议,因此在开始时使用@objc
。
问题是您在协议扩展中定义这些方法。 这用于定义协议的“默认实现”(即,如果类型未实现该方法,则将调用该协议的实现)。
但是 Objective-C 没有协议默认实现的概念。 因此,将协议声明为@objc
并在 Swift 协议扩展中具有默认实现是没有意义的。 符合此协议的 Objective-C 类永远无法享受这些 Swift 默认实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.