0

我有一个每秒触发一次的 NSTimer,在那一秒我通过设置 text 属性来更新 UILabel,如下所示:

remainglbl.text = [NSString stringWithFormat:@"%i:%02i", var1, var2];   

它工作正常,但是当我在 xcode 中使用 Start With Performance Tool -> Leaks 运行它时,似乎内存只是不断地攀爬和攀爬。

据我了解,应该自动释放字符串(尽管我从未看到内存减少或停止增加)。

这是内存泄漏吗?有没有更好的方法可以控制我的内存使用情况?

谢谢!

更新:创建计时器的代码如下:

timeTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(changeTime:) userInfo:nil repeats:YES];  

定时器完成时清理的代码如下:

[timeTimer invalidate];
[timeTimer release];
timeTimer = nil;

这有什么问题吗?我认为一旦计时器完成,内存可能会被释放,但事实并非如此。

4

2 回答 2

1

我相信问题在于我不了解性能工具。使用活动监视器运行不会显示内存使用量增加。

于 2009-06-10T16:38:04.097 回答
0

只是出于好奇,如果您使用 [remainingLbl setText: ] 而不是设置属性,问题是否仍然存在?您的代码看起来不错...应该清理内存,因为 stringWithFormat 会自动释放字符串。

另一件要尝试的事情:当您在 Objective-C 中创建线程时,您必须将所有代码包装在 NSAutoreleasePool 中,以便清理您在线程执行期间创建的内容。这不应该在这里有所作为,因为应该已经存在 - 但值得一试。

于 2009-05-03T17:40:28.360 回答