2012-03-26 57 views
0

我想观察改变了的NSMutableString isDetailView志愿上的NSMutableString不工作

-(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方法不会被调用。有任何想法吗?

回答

5

您不改变属性,只改变它指向的对象的内容。如果您isDetailView一个正常的字符串,并做

[self setIsDetailView: @"YES"] 

它会奏效。

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

+0

哦,我明白了,这是做到了。那么,最初是DetailsView是BOOL,但我不认为它适用于KVO。还是呢?那么NSNumber呢? – Snowman 2012-03-26 14:34:48

+1

即使它是基本类型,KVO也适用于布尔值。 – 2012-03-26 14:35:39