Tôi đã một ViewController tạo một thể hiện của một UIView, và sau đó tôi đăng ký một người quan sát với các trường hợp, chẳng hạn rằngobserveValueForKeyPath không được gọi
logoAnimation = [[MainLogoAnimation alloc] init];
[logoAnimation addObserver:self forKeyPath:@"patrocinioDidLoad" options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld) context:nil];
sau đó, trong cùng một tập tin, tôi có:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSLog(@"%@ \n %@ \n %@ \n ",keyPath,object,change);
}
Nhưng, mặc dù tôi đã kiểm tra và kiểm tra lại rằng logoAnimation.patrocinioDidLoad đã thay đổi, không bao giờ được gọi observeValueForKeyPath ...
tôi có thiếu cái gì?
Cảm ơn sự giúp đỡ!
Antonio
cảm ơn bạn đã giải quyết được sự cố của tôi Đối với tôi, một cái gì đó như logoAnimation = [[MainLogoAnimation alloc] init]; không hoạt động nhưng self.logoAnimation = [[MainLogoĐịnh mức phân cấp] init] autorelease]; công trinh. – ssj
Vì vậy, bạn luôn phải đặt "tự" ở phía trước nếu bạn muốn sử dụng bộ định vị và getters được tạo bởi @synthesize? – gonzobrains
WOW! Sau nhiều giờ kiểm tra mã của tôi để tìm hiểu lý do tại sao obserValueForKeyPath không bao giờ được gọi, cuối cùng tôi đã tìm thấy rằng đây là lý do tại sao. Tại sao Apple không in đậm nó trong tài liệu mà người ta phải đi qua setter (và do đó sử dụng tài sản thay vì ivar) để nó hoạt động? – ArtOfWarfare