【Swift】遅延処理のキャンセル方法

遅延処理について記事を書きましたが、今回はキャンセル方法。例えば5秒の遅延処理を始めたものの、5秒経たないうちにその処理をキャンセルしたい。そういう場合の処理を説明します。

目次

遅延処理のキャンセル方法

例えば5秒後に”遅延処理”とプリントする場合のコードです。走り出すと他の命令があろうとなかろうと、とにかくプリントされます。

DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) {
  print("遅延処理")
}

これを次のコードに変更します。

var gworkItem = DispatchWorkItem(){}  //インスタンス変数を定義します。

gworkItem = DispatchWorkItem() {
  print("遅延処理")  //遅延処理の内容を定義します。
}
DispatchQueue.main.asyncAfter(deadline: .now() + 5.0, execute: gworkItem)

そして次がキャンセルする関数です。他の命令の中に記述します。実行すると遅延処理がキャンセルされます。

gworkItem.cancel()

最後に

遅延処理を取り入れたプログラムを書くと、しばしば実行前にキャンセルしたい場合が出てきますので、かなり使えるコードと思います。

コメント

コメントする

CAPTCHA


目次