Вы получите эту ошибку, если ваш класс удовлетворяет этим условиям.
- Подкласс от
NSObject
.
- Есть
static let
поле.
- Получает доступ к полю из метода экземпляра через
dynamicType
.
Я не знаю, почему это происходит, но вы можете попробовать этот обходной путь.
static var value: Int {
get {
return 111
}
}
Или в более короткой форме.
static var value: Int {
return 111
}
Используйте static var { get }
вместо static let
.
Хотя средство получения свойства и стоимость его вызова с большой вероятностью будут исключены оптимизатором LLVM в приведенном выше примере, вы можете явно избежать этого.
Если вас беспокоит такая стоимость расчета стоимости, вы можете создать ее один раз и кэшировать вот так.
static var value: Int {
return cache
}
private let cache = getTheNumber()
Или вот так, если вы хотите полностью скрыть существование кеша.
static var value: Int {
struct Local {
static let cache = getTheNumber()
}
return Local.cache
}
func test2
Декларации не требуется , чтобы вызвать ошибку, так как из Xcode 7.3.1.