Here is the method that I use to update the UI when a background async thread. This is mostly for my own reference:

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            //background processing goes here
            dispatch_async(dispatch_get_main_queue(), ^{
                    //update UI here
            });
    });