title: iOS: Multi-layers of modally presented navigation controller slows down VC presentation?
body: <p>I have a navigation controller say navA, which can present (ie modally) another navigation controller navB, and navB can also present another navigation controller navC, I've observed that randomly there can be a delay when navB presents navC, I tried to log before navB presents navC and also in the completion block:</p>
  <pre><code>// inside a VC which is on navB's stack:
  
  NSLog(@&quot;started&quot;);
  [self.navigationController presentViewController:navC animated:YES completion:^{
      NSLog(@&quot;completed&quot;);
  }];
  </code></pre>
  <p>Has anyone seen this kind of issue? Or is there any other issue I've missed?</p>
  <p>Update:</p>
  <p>I put some log in different VC life cycle methods:</p>
  <blockquote>
  <p>2014-12-11 10:16:41.631 ####### [78210:7119850] DID INIT</p>
  <p>2014-12-11 10:16:41.631 ####### [78210:7119850] DID FINISH INIT</p>
  <p>2014-12-11 10:17:00.007 ####### [78210:7119850] DID LOAD</p>
  <p>2014-12-11 10:17:00.010 ####### [78210:7119850] WILL APPEAR</p>
  <p>2014-12-11 10:17:00.517 ####### [78210:7119850] DID APPEAR</p>
  </blockquote>
  <p>So after <code>viewDidLoad</code>, it took nearly 19 seconds to call <code>viewWillAppear</code>, I guess it's doing some internal view hierarchy work before loading/presenting the view?</p>
  <p>Update 2:</p>
  <p>This seems to be a common issue on iOS 8+, a quick fix is to put the presentVC... code inside the dispatch_async block on main queue.</p>