我一直在寻找解决这个问题的方法。似乎没有任何帮助。
我已经设置了这个基本测试,试图找出我的内存没有被释放的原因:
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 以上并保持在那里,但在释放纹理后的第二次触摸时,它仅下降到 22mb 左右。
我再次尝试使用 [uiimage imagenamed:] 加载图像进行测试,但由于缓存,此方法执行它仅意味着完整的 30mb 保留在内存中。