title: What's the difference between synchronous and asynchronous calls in Objective-C, versus multi-threading?
body: <p>For the longest time I thought asynchronous was synonymous to running something on a background thread, while synchronous meant on the main thread (blocking UI updates and interactions). I understand that not running on the main thread for expensive actions is because it doesn't allow UI actions to occur as the main thread is occupied, but why is synchronous troublesome?</p>
  
  <p>However, it's since came to my attention that you can make asynchronous calls on the main thread, and synchronous calls on background threads.</p>
  
  <p>I always hear people saying not to use expensive calls synchronously or on the main thread, as it will block the UI for the user. Are these two separate issues I should be making sure I don't do? What are the differences?</p>