GCD,影响儿童UIView控制器的队列,可重入

时间:2013-02-24 17:00:09

标签: ios uiview grand-central-dispatch uivewcontroller

假设我们有一个UIViewController,称之为A,在该VC的viewDidLoad中我们添加了两个UIViewControllers(B,C)。现在要在A viewDidLoad中平滑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的{​​{1}}中做同样的事情?只是因为我在后台线程上创建了那些子VC,这是否意味着我不需要对它们做任何GCD wokr?我试图让我的UI尽可能响应,但不会使代码混乱。我猜这种措辞的另一种方式是GCD线程可以重入吗? iOS中存在重入概念吗?

1 个答案:

答案 0 :(得分:0)

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

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

来源和更多信息:Warning: UIKit should not be called from a secondary thread