title: Can't use NSTimer update UI
body: <p>In my app, I want to use a NSTimer update my UIButton instance, but my button's title didn't change as the time elapse. My code is here:</p>
  
  <pre><code>-(void)fireTimer{
  
      self.leftTime = 30;
      self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerAction) userInfo:nil repeats:YES];
  
      [self.timer fire];
  }
  
  - (void)timerAction
  {
      self.leftTime--;
      NSLog(@"%d current runloop and mode is %@", self.leftTime, [NSRunLoop currentRunLoop].currentMode);
  
      [self.customBtn setTitle:[NSString stringWithFormat:@"leftTime:%d", self.leftTime] forState:UIControlStateNormal];
  
      if(self.leftTime == 0)
      {
          [self.customBtn setTitle:[NSString stringWithFormat:@leftTime :%d, self.leftTime] forState:UIControlStateNormal];
          [self.timer invalidate];
      }
  }
  </code></pre>
  
  <p>And the NSLog output is correct, when <em>self.timeLeft == 0</em>, my button can change it's title correctly.</p>
  
  <p><img src="https://i.stack.imgur.com/qyLUj.png" alt="enter image description here"> </p>
  
  <p>Can someone tell me what's the problem? thanks!</p>