小编Ari*_*ian的帖子

在主线程上运行Objective-C而不阻塞它的方法

我知道这听起来不对!但是我需要实现的是在主线程上运行一个巨大的枚举,这显然会阻塞整个应用程序。我正在寻找的是某种动画或循环周期之间的延迟,以便其他代码可以执行。这是我的代码:

for (NSTextCheckingResult* match in matchedArray) {
    dispatch_async(dispatch_get_main_queue(), ^{
        [self addAttributes:@{NSBackgroundColorAttributeName:[UIColor redColor]} range:match.range];
    });
}
Run Code Online (Sandbox Code Playgroud)

如注释中所述,此代码与UI相关,必须在主线程上运行。

我也尝试过,dispatch_after但似乎它将在等待时间上阻塞线程。无论如何,我可以做到这一点,还是必须重做整个逻辑?

multithreading objective-c grand-central-dispatch ios

-1
推荐指数
1
解决办法
6835
查看次数