2

我很困惑!

我有一个运行倒计时的计时器设置,在计时器内我用经过的时间更新 UILabels,这一切都很好,但奇怪的是,当我通过仪器进行测试时,文本的设置会导致内存泄漏。

定时器代码是

NSTimer* timer = [NSTimer timerWithTimeInterval:1.0f
                                    target:self
                                    selector:@selector(myTimer:)
                                    userInfo:nil
                                    repeats:YES];
self.pnTimer = timer;
[[NSRunLoop mainRunLoop] addTimer:self.pnTimer forMode:NSRunLoopCommonModes];

我的计时器方法有以下...

- (void)myTimer:(NSTimer*)timer {
  ...
  if (self.secondsPassed <=9) {
     [self.secondsLabel setText:[NSString stringWithFormat:@"0%i",self.secondsPassed]];
  } else {
     [self.secondsLabel setText:[NSString stringWithFormat:@"%i",self.secondsPassed]];
  }
  ...

}

注释掉 [self.secondsLabel…并且反应迟钝(20 分钟左右)

标签定义为

    @property (weak, nonatomic) IBOutlet UILabel *secondsLabel;

请注意,我也在使用 iOS 6.1 的 iPhone 5 设备上进行测试

有什么想法我可能在这里做错了吗?谢谢你的帮助

4

1 回答 1

0

好的,发现它是什么。UI 还有一个光泽渐变按钮 UIButton+Glossy ( http://www.mlsite.net/blog/?p=232 )。我删除了按钮并更新标签不再导致内存泄漏。我假设每秒更新标签会导致完整的 UI 刷新,这也更新了有其自身问题的按钮!

谢谢

于 2013-02-18T12:40:20.663 回答