我遇到了一个奇怪的错误,即使有回答的问题,也没有人真正解释发生了什么。
如果我在Swift 3.0中定义以下类,编译器会为Objective-C为pi创建一个动态getter:
@objc class Thing : NSObject {
public static let pi = NSNumber(value:3.1415926)
}
但是,如果我将声明移到一个扩展名中,那么一切都会破裂:
@objc class Thing : NSObject {
}
extension Thing{
public static let pi = NSNumber(value:3.1415926)
}
我收到以下错误:
error: a declaration cannot be both 'final' and 'dynamic'
为什么在课程的扩展名或正文中声明它有什么不同?
谁是最终的?