首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >目标c中的代码执行

目标c中的代码执行
EN

Stack Overflow用户
提问于 2011-05-13 15:01:43
回答 3查看 200关注 0票数 1

大家好,如果我有这样的东西:

代码语言:javascript
复制
my code....
// active indicator activity
[otherClass method]; // method that takes 5-6 seconds
// disable indicator activity
my code...

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

如果我在调用方法之前激活了一个指示器活动,当" method“正在执行时,它会变成动画吗?

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2011-05-13 15:21:19

正如iceydee提到的,UI元素(如您的活动指示器)在主线程上运行。如果你加载一个大文件,下载一些东西或任何其他需要时间的东西,如果你想要动画UI元素,你必须在其他线程上执行。您可以使用中央调度中心,performSelectorInBackGround或其他技术(不推荐)。我会说:

代码语言:javascript
复制
my code....
// active indicator activity
[otherClass performSelectorInBackground:@selector(method) withObject:nil]; // method that takes 5-6 seconds
my code...

然后在otherClass的方法中,停止主线程上的活动指示器:

代码语言:javascript
复制
[activityIndicator performSelectorOnMainThread:@selector(stopAnimating) withObject:nil waitUntilDone:NO];
票数 1
EN

Stack Overflow用户

发布于 2011-05-13 15:08:12

您应该避免阻塞主线程那么长时间,请考虑将该方法拆分为两个单独线程中运行的otherClass方法。主线程用于UI更新,不确定指示器是否能够在主线程被阻塞的情况下运行,我认为不能。

票数 0
EN

Stack Overflow用户

发布于 2011-05-13 15:11:37

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

要做到这一点,请使用this之类的技术。请参阅performSelectorInBackgroundperformSelectorOnMainThread.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5988391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档