1

假设我们有一个UIViewController,称之为 A,在viewDidLoad那个 VC 中我们添加两个UIViewControllers(B,C)。现在为了使viewDidLoadA 中的 UI 流畅,我们做了一些 GCD 工作

  dispatch_queue_t queue = dispatch_queue_create("myqueue", NULL);
  dispatch_async(queue, ^{
  // Create webviews, do some setup here, etc etc
  // Perform on main thread/queue
   dispatch_async(dispatch_get_main_queue(), ^{
  // this always has to happen on the main thread
    [self.view addSubview:webView];
   });
 });

所以ParentViewController在 UI 渲染方面要好一些。

我的问题是:这足够 GCD 工作吗?viewDidLoad还是我应该对孩子做同样的事情viewcontrollers?仅仅因为我在后台线程上创建了这些子 VC,这是否意味着我不需要对它们执行任何 GCD wokr?我正在尝试使我的 UI 尽可能地响应,但不要使代码混乱。我想另一种说法是 GCD 线程是可重入的吗?iOS中有重入的概念吗?

4

1 回答 1

0

我不认为添加子视图会对性能产生重大影响。此外,应该在主 UI 线程上使用视图(或一般的 UIKit)。据我所知,在后台做这些事情被认为是不好的做法。

尝试将 GCD/Async 内容保存到处理器密集型工作或持续时间未知的任务中,例如从 Internet 下载内容。

来源和更多信息:警告:不应从辅助线程调用 UIKit

于 2013-02-25T00:15:12.007 回答