Nếu tôi có một tài sản như sauKVO bắn khi giá trị giao là không khác nhau
@property(assign, nonatomic) NSUInteger myValue;
Và gán một thuộc tính để nó
self.myValue = 2;
KVO sẽ cháy như mong đợi. Nếu sau này, sau đó tôi chỉ định cùng một giá trị cho nó
self.myValue = 2;
KVO sẽ kích hoạt lại. Tôi đã cho rằng KVO trong Objective-C sẽ không bắn nếu giá trị được gán không khác nhau. Có vẻ như tôi không chính xác.
Có cách nào để buộc hành vi mặc định này, tức là vô hiệu hóa thông báo KVO kích hoạt mỗi khi giá trị được gán không? Tôi có thể tạo accessors của riêng tôi, nhưng điều này có thể được khá nhiều công việc nếu có rất nhiều tài sản mà tôi muốn thay đổi ...
Cảm ơn bạn đã trả lời.
Nếu điều quan trọng đối với một số lý do là một thông báo cụ thể được chỉ phát sinh khi khi thay đổi giá trị , sau đó bạn cần phải viết một setter tùy chỉnh hoặc kiểm tra giá trị trước khi thiết lập nó. tức là 'if (self.myValue! = 2) self.myValue = 2'. – lnafziger
Một câu hỏi hay và điều ngạc nhiên là điều này không bao giờ được thực hiện rõ ràng trong tài liệu của Apple. – Fattie