方法不会覆盖其超类 swift 3.0 错误中的任何方法 [重复]

Posted

技术标签:

【中文标题】方法不会覆盖其超类 swift 3.0 错误中的任何方法 [重复]【英文标题】:Method does not override any method from its superclass swift 3.0 error [duplicate] 【发布时间】: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 冲突

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

你可以省略显式的get btw 感谢@Codo 它有效。 ... 现在我了解了为什么存在 override 关键字。如果它不存在,则永远不会发生此错误,并且 OP 将继续假设他的方法正在覆盖超类中的某些内容。整洁!

以上是关于方法不会覆盖其超类 swift 3.0 错误中的任何方法 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Swift 错误 - 方法不覆盖其超类中的任何方法

supportedInterfaceOrientations 方法不会覆盖其超类中的任何方法

覆盖 UICollectionView 的 UIPanGestureRecognizer

从Swift 3.2迁移到Swift 4我使用autosavesInPlace收到错误

Java继承方法隐藏(覆盖)

覆盖 touchesBegan:错误 - 方法不会覆盖超类中的任何方法