質問: AVPlayerLayer(player: videoPlayer) self.view.layer.addSublayer(playerLayer) player.play() DispatchQueue.main.sync { //ここで処理を実行したい } } ```
回答: 動画の取得を別スレッドで、UIの更新系の処理をmainスレッドで処理です。 syncやasyncの中に書かれた処理は普通に上から下に向けて処理されます。 下のようにすることで動画を取得してからデータ/UIの更新となります。 ``` // ここは一般的には非同期 async で実行します // 同期的でよい場合はDispatchQueueを使う必要はありません。 DispatchQueue.global().async { //ここでURLから動画の取得 // ここはasyncでもsyncでもOK。 下に違いを記述。 DispatchQueue.main.sync { // ここでデータの更新とUIの更新 } // DispatchQueue.main.syncの場合、ここに処理があれば、DispatchQueue.main.syncの実行後に処理される // DispatchQueue.main.asyncにした場合、ここに処理があれば非同期に実行される } ```