title: Will this iOS code cause memory to fill up over a sufficiently long time?
body: <p>So I'm writing an iPhone app who's only purpose is to count down from a date sometime in the future. It's a static app, will be the only non-standard app used on the phone, will always be the only thing running and the phone will be constantly charging (it's literally just going to sit in a display case). The app itself is dead simple, as you can see. The only thing I'm worried about is that over time the stack will overflow. Here's the only part of the code that actually does something</p>
  
  <pre><code>- (void)updateTimeRemaining {
      self.dateComponents = [self.calendar components:NSYearCalendarUnit|NSDayCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit
                                         fromDate:[NSDate date]
                                           toDate:endDate options:0];
      [self.yearsRemaining setText:[NSString stringWithFormat:@"%d", self.dateComponents.year]];
      [self.daysRemaining setText:[NSString stringWithFormat:@"%d", self.dateComponents.day]];
      [self.secsRemaining setText:[NSString stringWithFormat:@"%d", self.dateComponents.second]];
      [self performSelector:@selector(updateTimeRemaining) withObject:self afterDelay:1.0];
  }
  </code></pre>
  
  <p>Everything is weekly retained except for the calendar which never changes (although this shouldn't matter because there aren't any other views in the app). I guess this is really more of a question on iOS's garbage collection. Is it going to wait for a non-existent return value or discard the methods it doesn't need after they are done executing?</p>