LoginSignup
4
5

More than 5 years have passed since last update.

[swift]前回の呼び出しからの経過時間を調べる

Last updated at Posted at 2015-02-24

編集
何かコードがおかしかったので修正。


前回のフレームからの経過時間を求めたい時ってありますよね。速度の計算とか。そんなときに使えるやつです。たぶんこんな感じで書けば良い。

ElapsedTimeCounter.swift
import Foundation

class ElapsedTimeCounter {
    class var instance: ElapsedTimeCounter {
        struct Static {
            static let instance = ElapsedTimeCounter()
        }

        return Static.instance
    }

    private var lastDate: NSDate?

    func getMillisec() -> Int? {
        let now = NSDate()
        if let date = lastDate {
            let elapsed = now.timeIntervalSinceDate(date)
            lastDate = now

            return Int(elapsed * 100.0)
        }

        lastDate = now
        return nil
    }
}

UIScrollViewでこんな感じに使ってます。

MyScrollView.swift
    func scrollViewDidScroll(scrollView: UIScrollView) {
        if let millisec = ElapsedTimeCounter.instance.getMillisec() {
            println("sec \(millisec)")
        }
    }

Millisecを返すようにしてるんですけどほとんど1[ms]になっちゃいますね。もっと細かい単位で取ったとして、意味のある数字とも思えないし、どうしましょ。

swift1.2からSingletonが簡単に書けるようになったらしいですね。早くアップデートしたいです(今開発中なので人柱怖い)

4
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5