我正在尝试观察xxx
的属性变量(ResultDataClass
)。在我的工作ViewController
中,我写了以下内容。
-(void)dealloc {
ResultDataClass *resultData = [ResultDataClass getInstance];
[resultData addObserver:self forKeyPath:@"xxx" options:NSKeyValueObservingOptionNew context:NULL];
}
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
self.solutionText.text = @"test1";
if([keyPath isEqualToString:@"xxx"]) {
self.solutionText.text = @"test2";
}
}
solutionText
在我的工作UITextView
中是ViewController
。
运行程序后,textview中没有显示任何内容。
任何人都知道如何解决这个问题?
谢谢你,对不起我的英语。
答案 0 :(得分:1)
你用dealloc
方法写了观察者。会出现问题,在添加观察者时会释放您的对象,因此在更改KVO值时会出现崩溃。
没有崩溃,没有任何工作,我认为原因是;永远不会调用dealloc
方法。这意味着您的视图控制器永远不会被释放(可能是泄漏,存在强大的保留周期)。
而不是在viewDidLoad中添加它:
- (void)viewDidLoad
{
[super viewDidLoad];
ResultDataClass *resultData = [ResultDataClass getInstance];
[resultData addObserver:self forKeyPath:@"xxx" options:NSKeyValueObservingOptionNew context:NULL];
}