目标c中的代码执行

时间:2011-05-13 07:01:43

标签: objective-c uiactivityindicatorview

大家好,如果我有这样的事情:

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

当调用long方法时,我的类代码被阻塞了吗?

如果我在调用方法之前激活了一个指标活动,那么当“方法”正在执行时它将是动画吗?

感谢。

3 个答案:

答案 0 :(得分: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];

答案 1 :(得分:0)

你应该避免长时间阻塞主线程,考虑将方法分成两部分 - 在一个单独的线程中运行 [otherClass method] 。主线程用于UI更新,不确定指标是否能够在主线程被阻止的情况下运行,我认为不是。

答案 2 :(得分:0)

是的,除非你在另一个线程中运行long方法,否则它将被阻止。

为此,请使用this等技术。参见 performSelectorInBackground performSelectorOnMainThread