gpt4 book ai didi

ios - 如何在 Swift 中隐藏继承的方法

转载 作者:行者123 更新时间:2023-11-28 09:39:23 25 4
gpt4 key购买 nike

我有一个子类,其中包含我定义的方法和从其父类继承的方法。我希望 Parent 中的某些方法对用户不可用,或者至少在使用时生成编译错误/警告。示例:

class Parent {
public func secretMethod() { // Don't want anyone to use
}
}

class Child: Parent {
public func overtMethod() { // Fine with people using
}
}

Child.init().overtMethod() // Fine
Child.init().secretMethod() // Not Fine. Should not be viewable/useable/accessible

我无法更改父类。我多么渴望能够将 secretMethod 设置为 private。 Swift 不允许在覆盖函数时限制访问级别,因此我也无法在 Child 类中将 secretMethod 设置为 private

到目前为止,我一直在使用@available 来标记带有编译警告和消息的方法,但我希望有更好的方法吗?我考虑过覆盖并抛出错误,但如果原始方法未标记为 throws,则无法完成。

谢谢。

编辑:我也无法覆盖 secretMethod 使其不可用。 Child 类需要访问它。

最佳答案

重新考虑您的设计。

我认为您可能只考虑“用户”(另一个开发人员?..您正在编写一个库,我猜?)而不是现有源。子类化的基本思想是子类可以在父类使用的任何地方使用。

class A: UIView {
func availableMethod() {
}
// func layoutSubviews() ----- let's say you want to hide this method
}

这里出现问题是因为您不知道任何其他内部类可能正在使用 layoutSubviews 做什么,如果您以某种方式将其阻止在 A 的实例上,那么任何事情期望能够像使用 UIView 的实例一样使用该实例现在将失败。

关于ios - 如何在 Swift 中隐藏继承的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53837887/

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