【问题标题】:Method does not override any method from its superclass swift 3.0 error [duplicate]方法不会覆盖其超类 swift 3.0 错误中的任何方法 [重复]
【发布时间】:2016-08-23 13:29:35
【问题描述】:

我正在将我的代码从 swift 2.2 转换为 swift 3.0,并且我得到 Method does not override any method from its superclass 错误。 这是我的代码:

override class func layerClass() -> AnyClass {
        return CAShapeLayer.self
    }

删除覆盖会导致以下错误: 带有 Objective-C 选择器“layerClass”的方法“layerClass()”与具有相同 Objective-C 选择器的超类“UIView”中的“layerClass”的 getter 冲突

【问题讨论】:

    标签: ios swift swift3 xcode8-beta6


    【解决方案1】:

    layerClass 现在是一个 getter 而不再是一个方法(从 Swift 3 或 iOS 10 开始)。所以你必须重写getter:

    override public class var layerClass: Swift.AnyClass {
        get {
            return CAShapeLayer.self
        }
    }
    

    【讨论】:

    • 你可以省略显式的get { btw
    • 感谢@Codo 它有效。
    • ... 现在我了解了为什么存在 override 关键字。如果它不存在,则永远不会发生此错误,并且 OP 将继续假设他的方法正在覆盖超类中的某些内容。整洁!
    猜你喜欢
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多