KVO和更改UI的值已更改

时间:2012-09-06 23:43:37

标签: objective-c ios thread-safety key-value-observing

如果我添加一个观察者来观察UILabel的“突出显示”属性,我可以对观察回调块中的另一个UIView进行更改吗?即:我保证这个回调块将始终在主线程上执行吗?

谢谢!

1 个答案:

答案 0 :(得分:6)

您将在线程上收到observeValueForKeyPath:...消息,该消息会更改您正在观察的属性。

UIKit仅支持在主线程上更改视图的属性。只要您遵循该规则,您将只会在主线程上收到通知。

如果需要从另一个线程更改标签的highlighted属性,则应该调度到主线程来执行此操作。例如,您可以从任何线程安全地执行此操作:

dispatch_async(dispatch_get_main_queue(), ^{
    myLabel.highlighted = YES;
});