スポンサーリンク

【Swift】処理の後に処理を行う方法ご紹介。〜 DispatchQueue 〜

Swift
スポンサーリンク

今回の記事はSwift開発で遅い処理が完了してから処理を行う場合、必要な操作を「DispatchQueue」を使って実装してみます。興味があれば是非参考にしてみて下さい。

スポンサーリンク

処理の後に処理を行う方法ご紹介。〜 DispatchQueue 〜

DispatchQueue.global().async {
    print("処理1(時間のかかる処理)")
}
//print("前処理 :" + String(maesyoriflag))
// dataを取得するまで待ちます
wait( { return maesyoriflag == false } ) {
    // 取得しました
    //print("前処理 :" + String(maesyoriflag))
    DispatchQueue.main.asyncAfter(deadline:.now() + 2.0) {
        print("処理2")       
   }
}

//待機用の関数()
func wait(_ waitContinuation: @escaping (()->Bool), compleation: @escaping (()->Void)) {
    var wait = waitContinuation()
    // 0.01秒周期で待機条件をクリアするまで待ちます。
    let semaphore = DispatchSemaphore(value: 0)
    DispatchQueue.global().async {
        while wait {
            DispatchQueue.main.async {
                wait = waitContinuation()
                semaphore.signal()
            }
            semaphore.wait()
            Thread.sleep(forTimeInterval: 0.01)
        }
        // 待機条件をクリアしたので通過後の処理を行います。
        DispatchQueue.main.async {
            compleation()
        }
    }
}

今回の記事は以上です。他にも多数のSwift関連の記事を記載しているのでサイト内見ていって下さい。

おすすめ情報ご紹介。

下記リンクよりU-NEXTの契約をすると31日間無料でU-NEXTの全動画約21万作品を見放題です。31日期間に解約すれば0円です。今だけのおすすめ情報なのでまだ登録していない人は是非!

スポンサーリンク
Swift
スポンサーリンク
シェアする
スポンサーリンク
SunnyDayTravel-Blog

コメント

タイトルとURLをコピーしました