我正在尝试观察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
。运行该程序后,文本视图中未显示任何内容。
有人知道怎么修这个东西吗?
谢谢你,抱歉我的英语。
最佳答案
您用dealloc
方法编写了观察者。会有一个问题,当您添加观察者时,对象将被释放,因此,当KVO值更改时,将发生崩溃。
我认为原因是没有崩溃,没有任何工作。永远不会调用dealloc
方法。这意味着您的视图控制器永远不会释放(可能存在泄漏,存在强大的保留周期)。
而不是在viewDidLoad中添加:
- (void)viewDidLoad
{
[super viewDidLoad];
ResultDataClass *resultData = [ResultDataClass getInstance];
[resultData addObserver:self forKeyPath:@"xxx" options:NSKeyValueObservingOptionNew context:NULL];
}