Para iOS 6, ¿cómo puedo cargar datos en un hilo de background y luego actualizar la interfaz de usuario?

Hay muchas forms de hacerlo, pero ¿cuál es la forma actual, moderna y correcta para las aplicaciones IOS 6?

Esto es lo que estoy haciendo ahora:

- (void)viewDidLoad { [super viewDidLoad]; __weak MyViewController *weakSelf = self; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, (unsigned long)NULL), ^(void) { // Do work that will take a long time // Store data in member variables, etc. // Update the UI dispatch_async(dispatch_get_main_queue(), ^{ [weakSelf.myTableView reloadData]; }); } } 

Con ARC, no creo que la reference débil sea necesaria, pero no estoy 100% seguro.

¡Lo que estás haciendo es completamente el path correcto! La reference débil es necesaria cuando usa bloques y es totalmente ARC. Antes de ARC, "débil" no existía todavía.