NSMutableString上的KVO无法正常工作

时间:2012-03-26 14:21:14

标签: ios objective-c cocoa-touch key-value-observing

我正在尝试观察对NSMutableString isDetailView的更改:

-(void)viewDidLoad {
    [self addObserver:self forKeyPath:@"isDetailView" options:NSKeyValueObservingOptionNew context:nil];
    [isDetailView setString:@"YES"];
}


- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    NSLog(@"obersedValueFOrKeyPath:%@", keyPath);
}

但是从不调用observeValueForKeyPath方法。有什么想法吗?

1 个答案:

答案 0 :(得分:5)

您不是要更改属性,只更改它指向的对象的内容。如果您将isDetailView设为正常字符串并执行

[self setIsDetailView: @"YES"]

它会起作用。

顺便说一句,以“是”开头的属性通常被认为是布尔值,在这种情况下看起来也更合适。