【发布时间】:2011-02-15 06:49:57
【问题描述】:
我一直在寻找解决这个问题的方法。似乎没有任何帮助。
我设置了这个基本测试,试图找出我的内存没有被释放的原因:
if (texture != nil)
{
[texture release];
texture = nil;
}
else
{
UIImage* ui = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image" ofType:@"png"]];
texture = [[Texture2D alloc] initWithImage:ui];
}
现在我将把它放在开始的触摸中,并通过在开始时使用仪器监控内存使用情况进行测试(通常为 11.5 - 12mb) 第一次触摸后,在没有对象存在的情况下创建纹理,内存跳转到 13.5 - 14
但是,在第二次触摸后,内存确实会减少,但只会下降到 12.5 - 13 左右。
仍有一大块内存被占用。
我在更大的范围内对此进行了测试,一次加载 10 个这样的大纹理 内存跃升到超过 30 mb 并保持在那里,但在释放纹理后的第二次触摸时,它仅下降到 22 mb 左右。
我再次尝试使用 [uiimage imagenamed:] 加载图像时进行测试,但由于此方法执行缓存,这意味着整个 30mb 仍保留在内存中。
【问题讨论】:
标签: iphone uiimage memory-management texture2d