title: UIAlertController does not show immediately
body: <p>Xcode version: 7.2.1, iOS version: 9.1+</p>
  
  <p>I am trying to display a UIAlertController alert message on the iPad that shows a "Loading...Please Wait" message without any buttons on it.  I present the UIAlertController before starting a long operation, and then after the long operation, I dismiss the UIAlertController.  <strong>However, what is happening is the UIAlertController DOES NOT show up immediately.  It only flashes up briefly AFTER the longer operation is completed, and then it is dismissed.</strong></p>
  
  <p>Following is the general code structure:</p>
  
  <pre><code>- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
  
      UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Loading" message:@"Please wait...\n\n\n" preferredStyle:UIAlertControllerStyleAlert];
      [self presentViewController:alert animated:YES completion:nil];
  
      /// Perform long operation here...
      /// (Basically, a message is being sent to a server, a long operation happens on 
      /// the server, and then the server returns a response to the iPad client.)
  
      [alert dismissViewControllerAnimated:YES completion:nil];
  }
  </code></pre>
  
  <p>I have tried a number of alternatives, like using dispatch_async so that the alert message can be displayed simultaneously while the long operation is occurring:</p>
  
  <pre><code>- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
  
      UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Loading Dataset" message:@"Please wait...\n\n\n" preferredStyle:UIAlertControllerStyleAlert];
      [self presentViewController:alert animated:YES completion:nil];
  
      dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{          
  
          /// Perform long operation here...
  
          dispatch_async(dispatch_get_main_queue(), ^{
  
              [alert dismissViewControllerAnimated:YES completion:nil];
          });
      });
  }
  </code></pre>
  
  <p>I've tried using UIAlertView (which I know is deprecated in iOS 8), both alone and with dispatch, but this is not working either.</p>
  
  <p>I've tried wrapping the long operation code in a performSelector message, but to no avail.</p>
  
  <p>In the past, using a UIAlertView with a dispatch_queue has worked seamlessly for this situation.</p>
  
  <p>Any assistance is appreciated.</p>
  
  <p><strong>Edit:</strong></p>
  
  <p>One interesting thing to note: In the dispatch_async code, if I add a usleep(250000) right before calling the long operation code, about 80% of the time, the UIAlertController alert message WILL be displayed at the correct time: BEFORE the long operation begins.  However, this is not 100% of the time, and is not a sustainable solution.  Calling usleep with a smaller number does not work.</p>
  
  <p>Note that for the DISPATCH_QUEUE_PRIORITY_DEFAULT option, I also tried:
  DISPATCH_QUEUE_PRIORITY_HIGH, DISPATCH_QUEUE_PRIORITY_LOW, and DISPATCH_QUEUE_PRIORITY_BACKGROUND</p>
  
  <p>And, I tried the following too:</p>
  
  <pre><code>dispatch_queue_t myQueue = dispatch_queue_create(NULL, DISPATCH_QUEUE_CONCURRENT);
  
  dispatch_async(myQueue, ^{
      /// Perform long operation here...
      dispatch_async(dispatch_get_main_queue(), ^{
          [alert dismissViewControllerAnimated:YES completion:nil];
      });
  });
  </code></pre>