Dispatch

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    // バックグランドでAPIなどを実行
});

dispatch_async(dispatch_get_main_queue(), ^{
    // メインスレッドで処理をしたい内容、UIを変更など。
});


dispatch_sync(dispatch_queue_create("test_sample", DISPATCH_QUEUE_SERIAL), ^{
    // 同期処理
});