gpt4 book ai didi

swift - swift 协议(protocol)中的继承

转载 作者:行者123 更新时间:2023-11-30 12:42:35 25 4
gpt4 key购买 nike

如何在 swift (2.0) 中解决这种情况:我们有两个协议(protocol):

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!")
}
}

但是编译器没有在协议(protocol)中建立继承(handleSuccess具有带有基参数和子参数的函数),存在编译错误:

Type 'Xyz' does not conform to protocol 'SuperDelegate'

。如何解决?只实现 ChildOfSuperDelegate 方法但类“A”使用 SuperDelegate 变量的最佳方法是什么。

也许我必须使用泛型类型来实现协议(protocol)中的继承之类的功能。

最佳答案

这里您的协议(protocol) ChildOfSuperDelegate 是从 SuperDelegate 继承的,尽管它是一个协议(protocol),但它没有实现它的方法。但是当你继承ChildOfSuperDelegate时,你还必须实现SuperDelegate的方法以及ChildOfSuperDelegate。

所以这样做:

class Xyz:ChildOfSuperDelegate{
func handleSuccess(rsp: BaseRsp) {
//do stuff
}

func handleSuccess(rsp: ChildOfBaseRsp){
print("Great!")
}
}

关于swift - swift 协议(protocol)中的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42066944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com