gpt4 book ai didi

ios - Swift 覆盖类函数

转载 作者:搜寻专家 更新时间:2023-10-30 22:35:50 25 4
gpt4 key购买 nike

在 Swift 中重写一个方法很容易:

class A {
func innerValue() -> Int { return 5 }
func getInnerValue() -> Int { return innerValue() }
}

class B: A {
override func innerValue() -> Int { return 8 }
}

B().getInnerValue() //returns 8

但是,当我将 innerValue() 声明为 static(使用 class 关键字)时,我不知道如何做同样的事情:

class A {
class func innerValue() -> Int { return 5 }
func getInnerValue() -> Int {
return A.innerValue() //ok for compiler but returns 5 instead of 8
return self.innerValue() //error: 'A' doesn't have a member named 'innerValue'
return innerValue() //error: Use of unresolved identifier 'innerValue'
}
}

class B: A {
override class func innerValue() -> Int { return 8 }
}

B().getInnerValue()

那么在 Swift 中有可能吗?

最佳答案

return A.innerValue() //ok for compiler but returns 5 instead of 8

从您的评论来看,您似乎想要做的是多态地引用当前实例的类。如果那是你想要的,那么不要将 innerValue() 消息发送给 A;这意味着只有 A。并且不要将它发送给self,因为你这样写,getInnerValue 是一个实例方法,而你要调用的是一个类方法。将其发送到当前实例的类 self.dynamicType

关于ios - Swift 覆盖类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29282230/

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