今作っているアプリで時間経過を表示する必要がありましたので、サンプルを作成しました。

ほとんどこちらのサイト様を参考にしています。ありがとうございます。

http://cocoa.synck.jp/1237172145.html


一式はgithubにおきましたので、必要でしたらこちらからどうぞ。
http://github.com/mmlemon/iPhoneTimerSample/tree/master

ストップウォッチアプリのキャプチャ

ストップウォッチアプリのキャプチャ

操作方法:

  • Startボタンをタップ:計測開始
  • Stopボタンをタップ:計測終了
  • 再びStartをタップした場合、0秒から再計測します

ソースについて:

時間を測る事は、

開始時刻をNSTimeIntervalで保持します。

現在時刻を保持する方法は、

NSTimeInterval time = [NSDate timeIntervalSinceReferenceDate];

を使うだけです。

二つのNSTimeIntervalを比較するには、単純に引き算するだけです。

NSTimeInterval currentTime = [NSDate timeIntervalSinceReferenceDate] – time;

(※timeは計測開始時刻を保持するNSTimeInterval)

定期的に表示時刻をアップデートするにはNSTimerを使います。こんな感じ。


self.timer =  [NSTimer scheduledTimerWithTimeInterval: 0.01                                   target:self                                  selector:@selector(updateTimer:)                                  userInfo:nil                                   repeats:YES];

scheduledTimerWithTImeIntervalがタイマーが呼ばれる期間であり、

selectorがこのscheduledTimerWithTimeIntervalで定期的に呼ばれるセレクタ(メソッド?)である、という事を押さえておけばよいと思います。

ちなみに、selectorで呼ばれるものは、

-(void)updateTimer:(NSTimer *)t

のようになる必要があります。

ここで経過時刻を測定、表示すれば継続的に表示が更新されるようになります。

タイマーを終了する場合は、

[self.timer invalidate];

として下さい。

追記1:

開始時刻と累積時刻が二重に存在しているので上手くないですね。。

追記2:

github初めて使ったんですけど、つまらないところでひっかかっちゃいましたが、それはまた別記事にします。

追記3:

こんな程度の内容ですが、記事を書く事で改めて気づく事がありました。

これからも続けようと思います。