Метод не переопределяет какой-либо метод из ошибки суперкласса swift 3.0

Я конвертирую свой код из swift 2.2 в swift 3.0, и я получил метод, который не переопределяет какой-либо метод из его ошибки суперкласса. Вот мой код:

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

Удаление переопределения приводит к следующей ошибке: метод «layerClass()» с селектором Objective-C «layerClass» конфликтует с геттером для «layerClass» из суперкласса «UIView» с тем же селектором Objective-C.


person Kevin Mac    schedule 23.08.2016    source источник


Ответы (1)


layerClass теперь является геттером, а не методом (начиная с Swift 3 или iOS 10). Итак, вам нужно переопределить геттер:

override public class var layerClass: Swift.AnyClass {
    get {
        return CAShapeLayer.self
    }
}
person Codo    schedule 23.08.2016
comment
Вы можете опустить явное get { кстати - person Hamish; 23.08.2016
comment
Спасибо @Codo, это работает. - person Kevin Mac; 23.08.2016
comment
... и теперь я узнаю, почему существует ключевое слово override. Если бы его не было, эта ошибка никогда бы не возникла, и OP продолжал бы продолжать, исходя из предположения, что его метод переопределяет что-то из суперкласса. Аккуратный! - person Alexander; 23.08.2016