私の中にはいくつかのレシピがありますCoreData
。すべてのレシピには属性prepHourとprepMinがあります。Start Timerボタンをタップすることで、カウントダウンタイマーを開始します。ただし、同時に動作する必要がある複数のタイマー (たとえば、各レシピ) が存在する場合があります。
私はこの方法を選択しました(間違っているかもしれません):
- タイマーには、シングルトンTimersを使用しました。
- 開始タイマーをタップして、パラメーター (name、prepHour、prepMin) を指定してメソッドを呼び出します
- 私のstartTimerメソッドはタイマーを作成し、それを
NSMutableDictionary
呼び出し方法:
[[Timers sharedTimers] startTimer:self.recipe.name startTimer:self.recipe.prepHour startTimer:self.recipe.prepMin];
タイマー シングルトンの場合:
- (void)startTimer:(NSString *)timerName startTimer:(NSNumber *)hVal startTimer:(NSNumber *)mVal
{
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:60.0f target:self selector:@selector(tick:) userInfo:nil repeats:YES];
if ([timer isValid]) {
NSArray *array = [NSArray arrayWithObjects: timer, hVal, mVal, nil];
if (_timerDict == NULL) {
_timerDict = [[NSMutableDictionary alloc] init];
}
[_timerDict setObject:array forKey:timerName];
NSLog(@"%@", _timerDict);
}
}
- (void)stopTimer:(NSString *)timerName
{
NSArray *array = [_timerDict objectForKey:timerName];
NSTimer *timer = [array objectAtIndex:0];
if ([timer isValid]) {
[timer invalidate];
[_timerDict removeObjectForKey:timerName];
}
}
- (void)tick:(NSString *)timerName
{
NSArray *array = [_timerDict objectForKey:timerName];
//NSTimer *timer = [array objectAtIndex:0];
NSInteger hVal = [[array objectAtIndex:1] integerValue];
NSInteger mVal = [[array objectAtIndex:2] integerValue];
NSInteger sVal = 0;
各タイマーにtickメソッドを使用するにはどうすればよいですか? 各タイマーがこのメソッドを独自のパラメーター (timer、prepHour、prepMin) で呼び出すようにします