大家好,如果我有这样的事情:
my code....
// active indicator activity
[otherClass method]; // method that takes 5-6 seconds
// disable indicator activity
my code...
当调用long方法时,我的类代码被阻塞了吗?
如果我在调用方法之前激活了一个指标活动,那么当“方法”正在执行时它将是动画吗?
感谢。
答案 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 。