2011-05-13 170 views
1

大家好,如果我是這樣的財產以後:代碼執行

my code.... 
// active indicator activity 
[otherClass method]; // method that takes 5-6 seconds 
// disable indicator activity 
my code... 

當長方法被調用,在我的類別代碼被阻止嗎?

如果我在調用方法之前激活指示器活動,它將在「方法」執行時進行動畫處理?

謝謝。

+1

我不知道你的問題是什麼?你問你是否啓用動畫會繼續播放嗎?如果是這樣,那就取決於你的應用程序的工作方式。 – 2011-05-13 07:07:38

回答

0

您應該避免長時間阻塞主線程,請考慮將該方法分爲兩步 - 在單獨的線程中運行[otherClass方法]。主線程用於UI更新,不確定指標是否能夠在主線程阻塞的情況下運行,我認爲不是。

0

是的,除非您在另一個線程中運行long方法,否則它將被阻塞。

要做到這一點使用像this技術。參見performSelectorInBackgroundperformSelectorOnMainThread

1

正如iceydee提到的,UI元素(如您的活動指示符)在主線程上運行。如果你加載一個大文件,下載一些需要時間的東西或任何其他的東西,你必須在其他線程上執行,如果你想動畫UI元素。您可以使用Grand Central Dispatch,performSelectorInBackGround或其他技術(不推薦)。我會做:

my code.... 
// active indicator activity 
[otherClass performSelectorInBackground:@selector(method) withObject:nil]; // method that takes 5-6 seconds 
my code... 

然後在otherClass的方法,停止主線程上活動的指標:

[activityIndicator performSelectorOnMainThread:@selector(stopAnimating) withObject:nil waitUntilDone:NO];