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