2016-08-23 75 views
8

我將我的代碼從swift 2.2轉換到swift 3.0,我得到方法不覆蓋任何方法從它的超類錯誤。 這裏是我的代碼:方法不覆蓋任何方法從它的超類swift 3.0錯誤

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

刪除重寫導致以下錯誤: 法「layerClass()」用Objective-C中選擇「layerClass」吸氣劑具有相同的衝突爲「layerClass」從父「的UIView」 Objective-C選擇器

回答

10

layerClass現在是一個getter,不再是一個方法(從Swift 3或iOS 10開始)。所以你必須重寫getter:

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

你可以省略顯式'get {'btw – Hamish

+0

Thanks @Codo它的工作原理。 –

+0

...現在我知道爲什麼「覆蓋」關鍵字存在。如果它不存在,這個錯誤就不會發生,並且OP會繼續假設他的方法超越了超類中的某些東西。整齊! – Alexander

相關問題