UILabel在运行时更改,管理内存以更改字符串

时间:2010-11-10 01:17:53

标签: iphone objective-c memory-management memory-leaks uilabel

我在比赛中使用了几个标签作为玩家的HUD。我经常更新这些标签,以便播放器拥有最新信息。问题是我一直在使用

uiLabel.text = [NSString stringWithFormat:@"%3.0f", value];

传递标签应具有的新值。但是,我注意到,这里有一些软内存泄漏。因为我每秒多次执行此更新,这会创建一个设置为autorelease的字符串,我最终会占用比我需要更多的内存。保持它,因为观点不会消失。

我还试图明确地分配和释放字符串,例如:

NSString* value = [[NSString alloc] initWithFormat: @"%3.0f", value];
uiLabel.text = value;
[value release];

然而,我发现这似乎导致了同样的事情,但更快,虽然我不知道为什么。在这种情况下,我原本以为应该永远不会有等待被释放的字符串,因为我是如此明确地解雇它们。

有谁能看到我在这里做的事情,我显然没有看到?是否有更好/更优选的方法来处理这个问题?一些粗略的搜索并没有给我带来太大的影响。

1 个答案:

答案 0 :(得分:2)

你没有做任何与众不同的事情。即使有:

uiLabel.text = [NSString stringWithFormat:@"%3.0f", value];

每次代码将控制权返回到运行循环时,自动释放池就会耗尽(至少与您看到UI更新时一样频繁)。如果你看到内存分配越来越多,你应该去别处看看。