タイマーというクラスを作りました。指定された初期化子は、秒単位の値でタイマーを開始します。それは素晴らしい働きをします。しかし、タイマーが刻々と過ぎてコントローラーを更新するのに問題があります。
現在、ティックごとに、現在の時刻を含む単純な辞書であるuserInfoを含むNSNotificationCenterを送信していますが、これは最善の方法ではありません...
NSDictionary *dict = [NSDictionary dictionaryWithObject:[NSNumber numberWithFloat:self.timerCount] forKey:@"timerCount"];
[[NSNotificationCenter defaultCenter] postNotificationName:@"TimerCountChanged"
object:self
userInfo:dict];
他のテクニックを使用する必要がありますか、それとも正しい方法で実行していますか?
前もって感謝します!
編集: 異なる値を使用して、異なるタイマーを初期化する必要があります。デリゲートを使用しようとしましたが、コントローラーには、これらすべてのタイマーのUIを更新するためのメソッドが1つしかありませんでした。こんなことをしたら悪いのでしょうか?UIButtonをモデルに渡すことも最善の解決策ではないようですが、機能します。
-(void)timer:(Timer *)timer didTriggerAt:(NSTimeInterval)time andButton:(UIButton *)button
{
[button setTitle:[NSString stringWithFormat:@"%.0f", time] forState:UIControlStateNormal];
}
- (IBAction)startCountDown:(UIButton *)sender
{
self.timer1 = [[Timer alloc] initWithTimeInSeconds:10 andButton:sender];
self.timer1.delegate = self;
}
MainViewに3つのタイマーがあり、ユーザーはいつでもタイマーを開始できます。また、ユーザーが定義する時間も異なる場合があります。