我有一个NSTimer每秒都会触发,在那一秒我通过设置text属性来更新UILabel:
remainglbl.text = [NSString stringWithFormat:@"%i:%02i", var1, var2];
它运行正常,但是当我使用Start With Performance Tool在xcode中运行它时,>泄漏,似乎记忆只是继续攀爬,攀爬和攀爬。
根据我的理解,字符串应该是自动释放的(尽管我从未看到内存减少或停止增加)。
这是内存泄漏吗?有没有更好的方法来控制内存使用?
谢谢!
更新:创建计时器的代码如下:
timeTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(changeTime:) userInfo:nil repeats:YES];
在定时器完成时清理的代码如下:
[timeTimer invalidate];
[timeTimer release];
timeTimer = nil;
这有什么问题吗?我认为一旦计时器结束,内存可能会被释放,但事实并非如此。
答案 0 :(得分:1)
我认为问题在于我不了解性能工具。使用活动监视器运行不会显示增加的内存使用量。
答案 1 :(得分:0)
出于好奇,如果您使用[remainingLbl setText:]而不是设置属性,问题是否仍会出现?你的代码看起来很好......因为stringWithFormat自动释放字符串,所以应该清理内存。
要尝试的另一件事是:在Objective-C中创建线程时,必须将所有代码包装在NSAutoreleasePool中,以便清除在线程执行期间创建的内容。这不应该在这里有所作为,因为一个人应该已经存在 - 但它值得一试。