我有一个结构:
struct ErrorResultType: ErrorType {
var description: String
var code: Int
}
和一个协议:
protocol XProtocol {
func dealError(error: ErrorResultType)
}
现在我想扩展 UIViewController:
extension UIViewController: XProtocol {
func dealError(error: ErrorResultType) {
// do something
}
}
所以我可以继承它并重写该函数,例如:
class ABCViewController: UIViewController {
--->override func dealError(error: ErrorResultType) {
super.dealError(error)
// do something custom
}
}
但它出错了:Declarations from extensions cannot be overridden yet
这对我来说没有任何意义。当我全部更换时ErrorResultType
with AnyObject
,错误就不会再出现了。
我错过了什么吗?
目前扩展中的方法必须标记为@objc
允许在子类中覆盖它。
extension UIViewController: XProtocol {
@objc
func dealError(error: ErrorResultType) {
// do something
}
}
但这要求方法签名中的所有类型都与 Objective-C 兼容,您可以使用ErrorResultType
不是。
制作你的ErrorResultType
不过,应该使用类而不是结构。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)