我正在尝试观察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];
}

08-05 23:44