大家好,如果我是这样的财产以后:代码执行
my code....
// active indicator activity
[otherClass method]; // method that takes 5-6 seconds
// disable indicator activity
my code...
当长方法被调用,在我的类别代码被阻止吗?
如果我在调用方法之前激活指示器活动,它将在“方法”执行时进行动画处理?
谢谢。
大家好,如果我是这样的财产以后:代码执行
my code....
// active indicator activity
[otherClass method]; // method that takes 5-6 seconds
// disable indicator activity
my code...
当长方法被调用,在我的类别代码被阻止吗?
如果我在调用方法之前激活指示器活动,它将在“方法”执行时进行动画处理?
谢谢。
您应该避免长时间阻塞主线程,请考虑将该方法分为两步 - 在单独的线程中运行[otherClass方法]。主线程用于UI更新,不确定指标是否能够在主线程阻塞的情况下运行,我认为不是。
是的,除非您在另一个线程中运行long方法,否则它将被阻塞。
要做到这一点使用像this技术。参见performSelectorInBackground和performSelectorOnMainThread。
正如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];
我不知道你的问题是什么?你问你是否启用动画会继续播放吗?如果是这样,那就取决于你的应用程序的工作方式。 – 2011-05-13 07:07:38