title: Perform on Next Run Loop: What's Wrong With GCD?
body: <p>I'm trying these two approaches:</p>
  
  <pre><code>dispatch_async(dispatch_get_main_queue(),^{
      [self handleClickAsync];
  });
  </code></pre>
  
  <p>and</p>
  
  <pre><code>[self performSelector:@selector(handleClickAsync) withObject:nil afterDelay:0];
  </code></pre>
  
  <p>in response to a button press.</p>
  
  <p>The second allows the <code>UIButton</code> to highlight as one would expect and perform the <code>handleClickAsync</code> on the next run loop (I suppose: "sometime later" for sure). The first does not allow the <code>UIButton</code> instance to light up until the operation is completely done.</p>
  
  <p>What is the correct way to do this with GCD, or is <code>performSelector</code> still the only way?</p>