title: how ios UI update code defined for use with main dispatch
body: <p>I've been reading a lot of example code, i know that generally you want the <strong>code that updates your UI</strong> to execute on the main thread. And xcode will complain, at runtime, if i m missing something. Only sometimes though.</p>
  
  <p>So how is <strong>code that updates your UI</strong> actually defined?
  Is presenting an alert updating the UI? calling reloadData() on a UITableView? What about simply setting the text of a UILabel?
  Especially with these three, i've been seeing and using it both ways in my app and can't really figure out a rule. Especially since xcode lets me get away with both... sometimes.</p>
  
  <p>Edit: Ohh, i understand where my confusion came from. I thought it was random what thread you were on. But you are actually "always" on the main thread, unless you do something like a task, which runs on a background thread.</p>
  
  <p>So the Main Thread Checker didn't actually let me "get away" with using reload() and changing labels in my viewController falsely. It's just that i was guaranteed to be on the main thread.</p>
  
  <p>I thought i had to suddenly wrap every single label change everywhere in dispatch.async.</p>