【Swift】[21]同じ処理を一定間隔で動作させる方法

今回は、ある任意の処理を一回動作させた後も一定の間隔で動作させる方法を紹介します。。

実現するためのソースコードは下記のようになっています。。

func repeatFunction(){
...
    Timer.scheduledTimer(timeInterval: 間隔の秒数,
                target: self,
                                       selector: #selector(self.repeat),
                                       userInfo: nil,
                                       repeats: true
                                       )
...
...        
}

@objc func repeat(){
    //一定間隔で繰り返し行いたい処理
}

上記のコードにおけるTimer.scheduledTimer()によって

プログラム上にタイマーが作成され、第一引数のtimeIntervalの間隔でselector(第三引数)での処理が実行されます。

また、停止や再開等をさせたい時には、Timer型の変数を定義し、

その変数にて下記のようにタイマーの宣言を行うことにより処理の停止、再開が可能となります。

var repeatTimer : Timer!

override func viewDidLoad() {
...
    repeatTimer = Timer.scheduledTimer(//省略)
...
}
...
func stopTimer() {
    repeatTimer.invalidate()
}

func restartTimer(){
    repeatTimer = Timer.scheduledTimer(//省略)
}

また、このタイマーを停止、再開する際の注意点として、、、

再開する場合は上記のrestartTimer()のように変数を使用して再定義する必要があります。

これはタイマーの停止時にTimer()のinvalidate()を使用することにより、、

そのタイマーを一度Run Loopオブジェクトから完全に削除するためです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です