1

1 つあると仮定UIViewControllerし、それを A と呼び、viewDidLoadその VC に 2 つUIViewControllers( B,C ) を追加します。UI をスムーズにするために、viewDidLoadいくつかの 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

サブビューを追加することは、パフォーマンスに大きな影響を与えるとは思いません。また、ビュー(または一般的にUIKit)での再生は、メインUIスレッドで実行する必要があります。私の知る限り、バックグラウンドでそのようなことをするのは悪い習慣だと考えられています。

GCD / Asyncのものを、インターネットから何かをダウンロードするなど、プロセッサを集中的に使用する作業や期間が不明なタスクに保存してみてください。

ソースと詳細情報:警告:UIKitはセカンダリスレッドから呼び出されるべきではありません

于 2013-02-25T00:15:12.007 に答える