假设我们有一个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中存在重入概念吗?
答案 0 :(得分:0)
我认为添加子视图不会对性能产生重大影响。此外,应在主UI线程上播放视图(或一般的UIKit)。据我所知,在后台做这些事情被认为是不好的做法。
尝试将GCD / Async内容保存到处理器密集型工作或未知持续时间的任务中,例如从互联网下载内容。
来源和更多信息:Warning: UIKit should not be called from a secondary thread