繁体   English   中英

活动指示器会大大降低功能

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM