你如何在swift中覆盖layerClass

chu*_*guy 49 swift

在Objective-C中,我们使用这样做

+ (Class)layerClass
{
    return [CAEAGLLayer class];
}
Run Code Online (Sandbox Code Playgroud)

显然这不起作用:

CAEAGLLayer.class()
Run Code Online (Sandbox Code Playgroud)

因为class是Swift中的关键字.你是如何在Swift中做到的?

Dav*_*son 101

改编自Apple的ListerKit示例代码:

override class func layerClass() -> AnyClass {
    return CAEAGLLayer.self
}
Run Code Online (Sandbox Code Playgroud)

Swift 3更新:

override class var layerClass: AnyClass {
    get {
        return CAGradientLayer.self
    }
}
Run Code Online (Sandbox Code Playgroud)


sav*_*ola 28

在iOS 10中,这是计算属性而不是方法:

override class var layerClass: AnyClass {
    get {
        return CAEAGLLayer.self
    }
}
Run Code Online (Sandbox Code Playgroud)