これは本当に私を夢中にさせています。
ボタンがあり、そのボタンに触れると、UI を更新するメソッドが呼び出されます。問題のメソッドは次のとおりです。
- (void)loadLevelWithImagePath:(NSString *)imagePath difficulty:(int)difficulty modelName:(NSString *)modelName
{
// do stuffs
}
そうでないことを除いて。
ただし、メソッド本体全体を次のように囲むと:
dispatch_async(dispatch_get_main_queue(), ^{
// do stuffs
}
できます!
ただし、メソッドにブレークポイントを配置すると、デバッガーによると、それは既にメインスレッドにあるため、私は困惑しています。また、これら2つのチェックを入れると:
- (void)loadLevelWithImagePath:(NSString *)imagePath difficulty:(int)difficulty modelName:(NSString *)modelName
{
NSLog(@"%d", [NSThread currentThread] == [NSThread mainThread]);
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"%d", [NSThread currentThread] == [NSThread mainThread]);
// do stuffs
}
}
どちらも TRUE を返します!
私の質問は、UI が更新されないのはなぜですか? どうもありがとう!