Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UILabel内存泄漏?_Iphone_Objective C_Uilabel_Nstimer - Fatal编程技术网

Iphone UILabel内存泄漏?

Iphone UILabel内存泄漏?,iphone,objective-c,uilabel,nstimer,Iphone,Objective C,Uilabel,Nstimer,我有一个每秒都会触发的NSTimer,在这一秒,我通过如下设置text属性来更新UILabel: remainglbl.text = [NSString stringWithFormat:@"%i:%02i", var1, var2]; 它工作得很好,但当我在xcode中使用“性能工具启动->泄漏”运行它时,内存似乎一直在不断攀升 根据我的理解,字符串应该自动释放(尽管我从未看到内存减少或停止增加) 这是内存泄漏吗?有没有更好的方法来控制我的内存使用 谢谢 更新:创建计时器的代码如下所示

我有一个每秒都会触发的NSTimer,在这一秒,我通过如下设置text属性来更新UILabel:

remainglbl.text = [NSString stringWithFormat:@"%i:%02i", var1, var2];   
它工作得很好,但当我在xcode中使用“性能工具启动->泄漏”运行它时,内存似乎一直在不断攀升

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

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

谢谢

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

timeTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(changeTime:) userInfo:nil repeats:YES];  
[timeTimer invalidate];
[timeTimer release];
timeTimer = nil;
计时器完成时清理的代码如下所示:

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

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

出于好奇,如果使用[remainingLbl setText:]而不是设置属性,是否仍会出现问题?你的代码看起来很好。。。应该清理内存,因为stringWithFormat会自动删除字符串


还有一件事需要尝试:当您在Objective-C中创建线程时,您必须将所有代码包装在NSAutoreleasePool中,以便在线程执行期间创建的内容得到清理。这在这里不应该有什么区别,因为一个人应该已经存在了——但值得一试。

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

您是否确定这一行是导致内存增长的那一行(即,注释它可以解决问题)?也许你在其他地方泄漏。是的,我已经确定这条线路是有责任的。注释它可以解决问题。虽然与此无关,但我认为您过度释放了timeTimer,因为您在创建实例时没有保留它。[remainingLbl setText:]执行完全相同的操作。Re:NSAutoreleasePool-我没有设置自动释放池,因为我认为没有必要。我将创建并删除计时器的代码添加到了我的原始帖子中。您可能看到的是“总分配量”,即在某个时间点分配的内存量,即使它已被释放。“净分配”是当前内存使用量。“泄漏”工具还应明确显示哪些对象泄漏。