読者です 読者をやめる 読者になる 読者になる

"まだ"の力 [基礎辞書]

学んだことを書いていきます。質問やエラーなどございましたらお気軽にコメントお願いします。

時間を操る「NSTimer」

NSTimer

ゲームアプリをやったことある人がいるなら一度は目にしたことがある、制限時間やカウントダウンなどはこのNSTimerを使っているんです!
その中の代表的なメソッドがscheduledTimerWithTimerInterval(スケジュールドタイマーインターバル)というメソッド。

翻訳

scheduled |計画された
Timer      |タイマー
WithTimerInterval |タイマー間隔を持った

直訳すると計画されたタイマー間隔持ったタイマーということになります。
つまり、自分でタイマーの間隔を操作できるタイマーです。

ではその使い方を見ていきましょう。




制限時間30秒からカウントダウンし、0以下になったらタイマーを停止するコードです。

    var timeCount = 30  
    var GameTimer = NSTimer.scheduledTimerWithTimeInterval(
            1.0,    //何秒ごとにこのメソッドを実行するか。
            target: self,   
            selector: "countUp",  //どの関数を実行するか
            userInfo: nil,     
            repeats: true    //繰り返し実行するかどうか
            )
    }
    func countUp() {
        //カウントを1減らす
        timeCount-=1
        print("\(timeCount)")  //60→59→58→...と出力
        if timeCount < 1 {
            //タイマー止める
            GameTimer.invalidate()
}

カウントは0より下のマイナスになってしまっては制限時間としておかしいのでinvalidate()(インヴァリデイト)を使ってタイマーを止める!

翻訳

invalidate|無効にする

ポイント

scheduledTimerWithTimerInterval(スケジュールドタイマーインターバル)で時間間隔を操作!
invalidate()(インヴァリデイト)を使ってタイマーを止める!

参考サイト
Timer - Foundation | Apple Developer Documentation
002 タイマーを止める - Swift Docs


ちょっと一言

人がうまく記憶するコツは似た事柄に当てはめること