Here is the method that I use to update the UI when a background async thread. This is mostly for my own reference:
{% highlight objc %} dispatchasync(dispatchgetglobalqueue(DISPATCHQUEUEPRIORITYDEFAULT, 0), ^{ //background processing goes here dispatchasync(dispatchgetmain_queue(), ^{ //update UI here }); }); {% endhighlight %}