答案 0 :(得分:2)
当您将标签的文本设置为bits
指向的字符串时,它会存储对该字符串的引用。稍后当您更改data
时,它会创建一个data
指向的新字符串,但bits
和标签都仍然具有查看原始字符串的原始指针。您希望在更改data
时更新它们:
有几种方法可以采取这种情况,但最简单的方法之一是观察data
classBI
属性的更改,并在每次更新bits
和标签时它改变了:
[classBI addObserver:self
forKeyPath:@"data"
options:NSKeyValueObservingOptionNew
context:NULL];
然后,每当数据发生变化时,都会调用此方法:
// Note that you will need to get a reference to 'label' in order for this to work:
- (void) observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context {
if ([keyPath isEqual:@"data"]) {
bits = [change objectForKey:NSKeyValueChangeNewKey];
label.text = bits;
}
}