2011-05-13 105 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];