Obtendrá este error si su clase cumple con estas condiciones.
- Subclase de
NSObject
.
- Tiene un
static let
campo.
- Accede al campo desde un método de instancia a través de
dynamicType
.
No sé por qué sucede esto, pero puedes probar esta solución.
static var value: Int {
get {
return 111
}
}
O en forma más corta.
static var value: Int {
return 111
}
Usar en static var { get }
lugar de static let
.
Aunque es muy probable que el optimizador de LLVM elimine el captador de propiedades y su costo de llamadas en el ejemplo anterior, es posible que desee evitarlo explícitamente.
Si le preocupa el costo de cálculo de dicho valor, puede crearlo una vez y almacenarlo en caché de esta manera.
static var value: Int {
return cache
}
private let cache = getTheNumber()
O así si quieres ocultar la existencia de caché por completo.
static var value: Int {
struct Local {
static let cache = getTheNumber()
}
return Local.cache
}
func test2
declaración no es necesaria para activar el error, a partir de Xcode 7.3.1.