0

これは本当に私を夢中にさせています。

ボタンがあり、そのボタンに触れると、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 が更新されないのはなぜですか? どうもありがとう!

4

1 に答える 1