0

1 秒間に約 20 回呼び出されるデリゲート メソッドがあります。デリゲート メソッドでは、以下のコードのようにカウンターを表す UILabel を更新しています。

    - (void) counterUpdated:(NSString *) value
    {
        lblCounter.text = [NSString stringWithString:value];

        // [[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.5]];

        // [lblCounter setNeedDisplay];

    }

スタックオーバーフローで同様の問題を読み、そこに解決策を実装し、保持[lblCounter setNeedDisplay];メソッドと[[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.5]];更新後に確認しlblCounterましたが、期待どおりに機能していません。

ポインタはありますか?

4

1 に答える 1

0

これをメイン スレッドで実行するには、Grand Central Dispatch を使用してみてください。

dispatch_async(dispatch_get_main_queue(), ^{
    lblCounter.text = value; 
});
于 2013-08-19T13:41:46.680 に答える