0

UILabelの「強調表示された」プロパティを監視するオブザーバーを追加した場合、監視コールバックブロック内の別のUIViewに変更を加えることはできますか?つまり、このコールバックブロックが常にメインスレッドで実行されることが保証されていますか?

ありがとう!

4

1 に答える 1

6

observeValueForKeyPath:...監視しているプロパティを変更するスレッドでメッセージを受け取ります。

UIKit は、メイン スレッドでのビューのプロパティの変更のみをサポートします。そのルールに従っている限り、メイン スレッドでのみ通知されます。

ラベルのプロパティを別のスレッドから変更する必要がある場合はhighlighted、メイン スレッドにディスパッチして実行する必要があります。たとえば、これはどのスレッドからでも安全に実行できます。

dispatch_async(dispatch_get_main_queue(), ^{
    myLabel.highlighted = YES;
});
于 2012-09-06T23:49:09.823 に答える