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

Iphone UILabel在运行时更改,管理内存以更改字符串,iphone,objective-c,memory-management,memory-leaks,uilabel,Iphone,Objective C,Memory Management,Memory Leaks,Uilabel,我有两个标签,在游戏中用作玩家的HUD。我经常更新这些标签,以便玩家获得最新信息。问题是我一直在使用 uiLabel.text = [NSString stringWithFormat:@"%3.0f", value]; 传递标签应具有的新值。然而,我注意到,我这里有一些软内存泄漏。当我每秒多次更新时,会创建一个设置为自动释放的字符串,结果占用的内存超过了我的需要。并保留它,因为风景不会消失 我还尝试显式地分配和释放字符串,例如: NSString* value = [[NSString al

我有两个标签,在游戏中用作玩家的HUD。我经常更新这些标签,以便玩家获得最新信息。问题是我一直在使用

uiLabel.text = [NSString stringWithFormat:@"%3.0f", value];
传递标签应具有的新值。然而,我注意到,我这里有一些软内存泄漏。当我每秒多次更新时,会创建一个设置为自动释放的字符串,结果占用的内存超过了我的需要。并保留它,因为风景不会消失

我还尝试显式地分配和释放字符串,例如:

NSString* value = [[NSString alloc] initWithFormat: @"%3.0f", value];
uiLabel.text = value;
[value release];
然而,我发现这似乎导致了同样的事情,但速度更快,尽管我不知道为什么。在这种情况下,我会认为根本不应该有任何字符串坐在那里等待释放,因为我是如此明确地拒绝它们


有人能看到我在这里做什么,而我显然没有看到吗?是否有更好/更可取的方法来处理此问题?一些粗略的搜索对我来说没有多大帮助。

你没有做任何不寻常的事情。即使:

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

每次代码将控制权返回到运行循环时,自动释放池都会被耗尽(因此,至少与您看到的UI更新一样频繁)。如果您看到内存分配不断增加,您应该看看其他地方。

我注释掉了这些调用(整个HUD刷新,目前仅构成其中三个调用),字符串停止增加。--运行应用程序约5分钟会让我受益匪浅。如果可能的话,我很乐意在stackoverflow上附加一个屏幕截图(我对发布很陌生)。如果我能提供一些信息来帮助你,一定要让我知道。我又做了一些分析测试,我相信你的答案应该是有道理的,但肯定不是我所看到的。