คุณจะได้รับข้อผิดพลาดนี้หากชั้นเรียนของคุณเป็นไปตามเงื่อนไขเหล่านี้
- คลาสย่อยจาก
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