簡體   English   中英

在Objective-C的IBAction期間顯示文本

[英]display text during IBAction in objective-c

我有一些代碼,如下所示:

- (IBAction)startButtonPressed:(id)sender {
    statusText.text = @"Processing...";

    //here I do a bunch of calculations

    //display calculated data
    statusText.text = [[NSString alloc] initWithFormat:@"coefficient: %.4f",
         [[coefficientEstimatesR objectAtIndex:0] doubleValue]];
}

我所做的計算大約需要17秒,因此我想在完成時顯示“正在處理”一詞。 但是,運行此命令時,從不顯示“處理中”,僅顯示計算出的數據。

任何想法如何做到這一點將不勝感激。 謝謝!

不要在GUI線程中進行任何處理,不要花費一秒鍾,尤其是花費17秒時。 使用GCD使卸載任務變得微不足道:

- (IBAction)startButtonPressed:(id)sender {
    statusText.text = @"Processing...";

    dispatch_async(dispatch_get_global_queue(0, 0), ^{
        //here I do a bunch of calculations

        dispatch_async(dispatch_get_main_queue(), ^{
            //display calculated data
            statusText.text = [[NSString alloc] initWithFormat:@"coefficient: %.4f",
                               [[coefficientEstimatesR objectAtIndex:0] doubleValue]];
        });
    });
}

但是,運行此命令時,從不顯示“處理中”,僅顯示計算出的數據。

那是因為繪圖發生在主線程上。 如果占用主線程進行計算,則將阻止其他所有可能發生的事情,包括繪制狀態文本。

而是設置狀態文本,啟動后台線程(或將塊分配到隊列等),並盡快從操作方法中返回。 計算完成后,讓后台線程(或塊)在主線程上調用方法,以便您可以再次更改狀態文本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM