1

重複の可能性:
NSProgressIndicator は For ループで進行しますか?

今回は簡単な質問があります(うまくいけば)。私は NSProgressIndicatorView (進行状況バー) を持っており、for ループの実行時にその値とステータス ラベルを更新したいと考えています。

for(int i=0; i<[nameArr count]; i++)
{
    NSString* str = [nameArr objectAtIndex:i];
    [text setStringValue:str];
    [status setStringValue:[NSString stringWithFormat:@"Processing names...%d of %ld",(i+1),[nameArr count]]];
    [progress setDoubleValue:i];
}

このコードは機能しますが、ステータス ラベルとプログレス バーは for ループ全体が終了するまで更新されません。として送信すると、実行中の動作を見ることができるので、ステータスラベルとプログレスバーを同様に更新NSLogする簡単な方法 (を作成せずに) があるはずだと思います。NSOperation

何か案は?

4

1 に答える 1

1

掘り下げた後、次のコードを使用して for ループを介して UI を非同期的に更新できます。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {
    for(int i=0; i<max; i++)
    {
        //Run for loop stuff here

        dispatch_async(dispatch_get_main_queue(), ^(void) {
           //Run UI updates in here 
        });
    }
});
于 2012-11-29T03:17:56.787 に答える