title: NSMutableDictionary with NSTimers
body: <p>There are several recipes in my <code>CoreData</code>. Every recipe has attributes <strong>prepHour</strong> and <strong>prepMin</strong>. I would like by tapping to button <strong>Start Timer</strong> start countdown timer. But there can be several timers (for example for each recipe) which must work simultaneously</p>
  
  <p>I selected this way (may be it's wrong):</p>
  
  <ol>
  <li>For timers I used singleton <strong>Timers</strong>.</li>
  <li>By tapping to my <strong>Start Timer</strong> I call method with parameters (name, prepHour, prepMin)</li>
  <li>My <strong>startTimer</strong> method creates timer and puts it to <code>NSMutableDictionary</code></li>
  </ol>
  
  <hr>
  
  <p>Calling method:</p>
  
  <pre><code>[[Timers sharedTimers] startTimer:self.recipe.name startTimer:self.recipe.prepHour startTimer:self.recipe.prepMin];
  </code></pre>
  
  <p>In Timers singleton:</p>
  
  <pre><code>- (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;
  </code></pre>
  
  <p>How should I use <strong>tick</strong> method for each timer? I would like each timer call this method with own parameters (timer, prepHour, prepMin)</p>