title: Are AFNetworking success/failure blocks invoked on the main thread?
body: <p>Does AFNetworking call the completion block on the main thread? or is it called in the background, requiring me to manually dispatch my UI updates to the main thread?</p>
  
  <p>Using code instead of words, this is the example code from the <a href="https://github.com/AFNetworking/AFNetworking">AFNetworking documentation</a> with the call to <code>NSLog</code> replaced by a UI update:</p>
  
  <pre><code>AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
      self.label.text = JSON[@"text"];
  } failure:nil];
  </code></pre>
  
  <p>Should it be written like this instead?</p>
  
  <pre><code>AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
      dispatch_async(dispatch_get_main_queue(), ^{
          self.label.text = JSON[@"text"];
      });
  } failure:nil];
  </code></pre>