Với lớp đơn giản này, tôi nhận được cảnh báo trình biên dịch
Cố gắng sửa đổi / truy cập
x
trong setter / getter của chính nó
và khi tôi sử dụng nó như thế này:
var p: point = Point()
p.x = 12
Tôi nhận được EXC_BAD_ACCESS. Làm thế nào tôi có thể làm điều này mà không cần sao lưu rõ ràng?
class Point {
var x: Int {
set {
x = newValue * 2 //Error
}
get {
return x / 2 //Error
}
}
// ...
}
set
bạn muốn được sử dụng didSet
. Các thuộc tính hoạt động khác nhau trong Swift so với Objective-C hoặc các ngôn ngữ khác khi bạn triển khai set
. Xem câu trả lời dưới đây từ @jack và một ví dụ về didSet
từ @cSquirrel