Bạn sẽ nhận được lỗi này nếu lớp của bạn thỏa mãn các điều kiện này.
- Phân lớp từ
NSObject
.
- Có một
static let
lĩnh vực.
- Truy cập trường từ một phương thức thể hiện thông qua
dynamicType
.
Tôi không biết tại sao điều này xảy ra, nhưng bạn có thể thử cách giải quyết này.
static var value: Int {
get {
return 111
}
}
Hoặc ở dạng ngắn hơn.
static var value: Int {
return 111
}
Sử dụng static var { get }
thay vì static let
.
Mặc dù getter property và chi phí gọi của nó rất có thể bị loại bỏ bởi trình tối ưu hóa LLVM trong ví dụ trên, bạn có thể muốn tránh nó một cách rõ ràng.
Nếu bạn lo ngại về chi phí tính toán giá trị như vậy, bạn có thể tạo nó một lần và lưu trữ như thế này.
static var value: Int {
return cache
}
private let cache = getTheNumber()
Hoặc như thế này nếu bạn muốn ẩn hoàn toàn sự tồn tại của bộ đệm.
static var value: Int {
struct Local {
static let cache = getTheNumber()
}
return Local.cache
}
func test2
tuyên bố là không cần thiết để kích hoạt lỗi, tính đến Xcode 7.3.1.