ihatov08 blog

プログラミング初心者だけどRailsとSwiftマスターします

ストップウォッチアプリ

import UIKit

class ViewController: UIViewController {
    
    func result() {
        
        print("1 second has passed")
    
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        
        var timer = NSTimer()
        
        timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("result"), userInfo: nil, repeats: true)
        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

scheduledTimerWithTimeInterval|タイマーを発生させる間隔 (1.5fなら1.5秒間隔) target タイマー発生時に呼び出すメソッドがあるターゲット 時間が経過するとこのクラスのメソッドが呼び出される selector タイマー発生時(時間がきたら呼び出される)に呼び出すメソッドを指定する userInfo selectorで呼び出すメソッドに渡す情報(NSDictionary) repeats タイマーの実行を繰り返すかどうかの指定 (YES:繰り返す NO:1回のみ) 今回はタイマーの情報を何かに使うわけではないので、userinfoはnilに設定する。 resultメソッド内に記載したものが毎秒出力される。 経過した時間量を測るためにvar time = 0インスタンス変数を定義する。 viewDidLoad内に書いたメソッドはアプリが起動した途端に動き出す。 selfは今書いているクラスのインスタンスを指す。 selfは自分自身(インスタンス)を指し、そのインスタンスの属性であることを示すために使用する。 targetをselfにすると今回の場合、viewcontrollerクラスのメソッドが呼び出されるということ。

上記コードから1→2→3とカウントするように設定する。 ・var time = 0(0から始める)をviewcontroller内に定義する。 ※resultメソッド内に定義するとのちに変数timeにインクリメントを定義しても、resultメソッドが呼ばれる度に変数timeが0に戻ってしまうため、resultメソッドの外に定義する。またviewDidLoad内に定義するとアクセスできなくなる。