title: Grand central dispatch nesting
body: <p>I have a piece of code written inside a dispatch async block. Like below:</p>
  
  <pre><code>dispatch_queue_t queue= dispatch_queue_create("action1", NULL);
  
  dispatch_async(queue, ^{           
     [self method1];            
     [self method2];        
     [self method3];
  
     dispatch_async(dispatch_get_main_queue(), ^{
         //Update UI
     });       
  });
  </code></pre>
  
  <p>Now, what if I want to execute method3 on main thread? simply use </p>
  
  <pre><code>- (void) method3
  {
      dispatch_async(dispatch_get_main_queue(), ^{
          //Do method 3 on main thread
      });
  }
  </code></pre>
  
  <p>Is this the right way to do it ?? I just want method 1 2 and 3 to be executed first before my UI is updated and method3 needs to be executed on the main thread.</p>