2016-08-23 17 views
8

Tôi đang chuyển đổi mã của mình từ nhanh sang 2.2 sang nhanh và tôi nhận Phương thức không ghi đè bất kỳ phương thức nào từ lỗi siêu lớp của nó. Đây là mã của tôi:Phương pháp không ghi đè lên bất kỳ phương thức nào từ lỗi siêu lớp nhanh chóng 3.0 của nó

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

Loại bỏ ghi đè dẫn đến lỗi sau: Phương pháp 'layerClass()' với Objective-C selector xung đột 'layerClass' với getter cho 'layerClass' từ 'UIView' lớp cha với cùng Bộ chọn Objective-C

Trả lời

10

layerClass hiện là trình khởi động và không còn là phương thức (như của Swift 3 hoặc iOS 10). Vì vậy, bạn phải ghi đè lên getter:

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

Bạn có thể bỏ qua 'get {' btw – Hamish

+0

rõ ràng Cảm ơn @Codo nó hoạt động. –

+0

... và bây giờ tôi tìm hiểu lý do tại sao từ khóa 'ghi đè' tồn tại. Nếu nó không tồn tại, lỗi này sẽ không bao giờ xảy ra, và OP sẽ tiếp tục giả định rằng phương pháp của anh ta đã ghi đè thứ gì đó từ lớp siêu. Khéo léo! – Alexander

Các vấn đề liên quan