title: Async UIView content not showing up when coming back to main thread
body: <p>When loading my UIViewController, I basically put a spinner in the middle of the page until the content loads, then come back on the main thread to add the subviews :</p>
  
  <pre><code>- (void)viewDidLoad {
  
      [super viewDidLoad];
  
      UIActivityIndicatorView *aiv_loading = ... // etc
  
      dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
  
          // Load content
          NSString *s_checkout = [[BRNetwork sharedNetwork] getCheckoutInstructionsForLocation:self.locBooking.location];
          UIView *v_invoice_content = [[BRNetwork sharedNetwork] invoiceViewForBooking:locBooking.objectId];
  
          // Display the content
          dispatch_sync(dispatch_get_main_queue(), ^{
  
              if (s_checkout &amp;&amp; v_invoice_content) {
                  [aiv_loading removeFromSuperview];
                  [self showContentWithText:s_checkout AndInvoice:v_invoice_content];
              } else {
                  NSLog(@"No data received!"); // is thankfully not called
              }
          });
      });
  }
  
  - (void) showContentWithText:(NSString *)s_checkout AndInvoice:(UIView *)v_invoice {
  
      [self.view addSubview:[self checkoutTextWithText:s_checkout]]; // Most of the time displayed text
      [self.view addSubview:[self completeCheckout]]; // always Displayed UIButton
      [self.view addSubview:[self divider]]; // always displayed UIImageView
  
      // Summary title
      UILabel *l_summary = [[UILabel alloc] initWithFrame:CGRectMake(0, [self divider].frame.origin.y + 6 + 10, self.view.bounds.size.width, 20)];
      l_summary.text = NSLocalizedString(@"Summary", nil);
      [self.view addSubview:l_summary];
  
      CGRect totalRect = CGRectMake([self divider].frame.origin.x, [self divider].frame.origin.y + 6 + 30, self.view.bounds.size.width - [self divider].frame.origin.x, 90);
      _v_invoice = v_invoice;
      _v_invoice.frame = totalRect;
      [self.view addSubview:[self v_invoiceWithData:v_invoice]]; // THIS Pretty much never displayed
  
      UITextView *l_invoice = [[UITextView alloc] initWithFrame:CGRectMake(0, _v_invoice.frame.origin.y + _v_invoice.frame.size.height + offset, 320.0, 50)];
      l_invoice.text = NSLocalizedString(@"summary_emailed", nil);
      [self.view addSubview:l_invoice]; // Always displayed
  }
  </code></pre>
  
  <p>However, not all the content is displayed. The invoice is never there at first, but gets displayed after a couple of minutes. The other async-created string, s_content is sometimes not displayed.</p>
  
  <p>This seems to be random with the content creation. The end result is pretty neat, but not reliable for a production version.</p>
  
  <p>I used the undocumented [self.view recursiveDescription] to check if everything was there, and even if I don't see it, they are all there with what seems to be correct frames.</p>
  
  <p>Any pointers? 
  - layoutSubviews did not help!
  - putting a background color to the invoice view is showing the background color</p>