ด้วยคลาสแบบง่ายนี้ฉันได้รับคำเตือนคอมไพเลอร์
กำลังพยายามแก้ไข / เข้าถึง
x
ภายใน setter / getter ของตนเอง
และเมื่อฉันใช้มันเช่นนี้
var p: point = Point()
p.x = 12
ฉันได้รับ EXC_BAD_ACCESS ฉันจะทำสิ่งนี้ได้อย่างไรถ้าไม่มี ivars สำรองอย่างชัดเจน
class Point {
var x: Int {
set {
x = newValue * 2 //Error
}
get {
return x / 2 //Error
}
}
// ...
}
set
didSet
คุณสมบัติทำงานแตกต่างกันในสวิฟท์กว่า Objective-C หรือภาษาอื่น ๆ set
เมื่อคุณใช้ ดูคำตอบด้านล่างจาก @jackและตัวอย่างของdidSet
จาก @cSquirrel