2012-09-06 134 views
0

如果我添加觀察者以觀察UILabel的「高亮顯示」屬性,可以更改觀察回調塊中的另一個UIView嗎?即:我保證這個回調塊總是在主線程上執行?KVO和更改UI上的值更改

謝謝!

回答

5

您將在線程中收到observeValueForKeyPath:...消息,該消息更改您正在觀察的屬性。

UIKit僅支持在主線程上更改視圖的屬性。只要您遵循該規則,您只會在主線程中收到通知。

如果您需要將標籤的highlighted屬性從另一個線程更改,則應該派發到主線程來執行此操作。例如,您可以從任何線程安全地執行此操作:

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