如何在swift(2.0)中解决这种情况:我们有两个协议:
protocol SuperDelegate{
func handleSuccess(rsp: BaseRsp)
}
protocol ChildOfSuperDelegate: SuperDelegate {
func handleSuccess(rsp: ChildOfBaseRsp)
}
以及代码中我们想要的地方:
class A{
var delegate:SuperDelegate?
func foo(){
delegate?.handleSuccess(childOfBaseRspObj)
}
}
class Xyz:ChildOfSuperDelegate{
func handleSuccess(rsp: ChildOfBaseRsp){
print("Great!")
}
}
但编译器没有在协议中创建继承(handleSuccess具有带base和child参数的函数)存在编译错误:
Type 'Xyz' does not conform to protocol 'SuperDelegate'
。怎么解决?仅实现ChildOfSuperDelegate方法的最佳方法是什么,但类“A”使用SuperDelegate变量。
Meybe我必须使用泛型类型在协议中具有类似继承的想法。
答案 0 :(得分:0)
这里你的协议ChildOfSuperDelegate继承自SuperDelegate,虽然它是一个协议但它没有实现它的方法。但是当你继承ChildOfSuperDelegate时,你必须实现SuperDelegate的方法以及ChildOfSuperDelegate。
所以这样做:
class Xyz:ChildOfSuperDelegate{
func handleSuccess(rsp: BaseRsp) {
//do stuff
}
func handleSuccess(rsp: ChildOfBaseRsp){
print("Great!")
}
}