title: iOS - In which queue selectors run on by default?
body: <p>Suppose, I am presenting an <code>UIAlertController</code>, say <code>myAlert</code>, from main tread. <code>myAlert</code> has a action, <code>defaultAction</code>. I wonder if <code>defaultAction</code>s handler by default runs on main queue or not. In other words, I wonder if there are some UI related operation inside <code>doStuff</code> in below code, am I required to wrap these UI tasks with main queue or it is guaranteed to run in main queue by OS?</p>
  
  <pre><code>UIAlertController* myAlert = [UIAlertController alertControllerWithTitle:@"My Alert"
                                 message:@"This is an alert."
                                 preferredStyle:UIAlertControllerStyleAlert];
  
  UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
     handler:^(UIAlertAction * action) {
        doStuff() // should I wrap doStuff in main queue, if doStuff has ui operations?
     }
  ];
  
  [alert addAction:defaultAction];
  [self presentViewController:alert animated:YES completion:nil];
  </code></pre>