扩展中的Swift静态成员和声明不能同时是"最终"和"动态"

cfi*_*her 5 compiler-errors objective-c swift

我遇到了一个奇怪的错误,即使有关于它的回答问题,也没有人真正解释发生了什么.

如果我在Swift 3.0中定义以下类,编译器会为Objective-C为pi创建一个动态getter:

@objc class Thing : NSObject {

    public static let pi = NSNumber(value:3.1415926)
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我将声明移动到一个扩展中,那么所有的地狱都会崩溃:

@objc class Thing : NSObject {


}

extension Thing{
    public static let pi = NSNumber(value:3.1415926)

}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

error: a declaration cannot be both 'final' and 'dynamic'
Run Code Online (Sandbox Code Playgroud)

为什么在类的扩展或体内声明它有什么不同?

谁是最后的?