[英]Activity indicator slows function considerably
有没有其他人有这个问题? 我有一个函数,根据情况需要时间,有时执行速度非常快。 显示新的View Controller时会调用此函数,以便让用户看到该函数正在执行。我正在使用dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
在新线程中以及在同时显示新的视图控制器和活动指示器。
它可以按我预期的那样工作,但在某些情况下,该功能几乎应立即执行,但仍需要近3秒钟。 在活动指示器消失并显示内容之前。 似乎没关系,情况总是要花费相同的时间(3秒),但是当我在主线程中执行它时,花的时间却很有限。
omz指出,大多数UIKit类都不是线程安全的,并且涉及UI的任何事情都应在主线程上发生。 显示活动指示器时,在另一个队列上执行任意长时间运行的操作的正确方法如下所示:
[self showProgressUIOrWhatever];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self doSomeWork];
dispatch_async(dispatch_get_main_queue(), ^{
[self hideProgressUIOrWhatever];
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.