我正在尝试使用spriteKit制作一种360°可视化工具。在我的场景中,我创建了一个
spriteArray = [[NSMutableArray alloc] init];
我正以这种方式填写:
for ( int j=0; j<stepsY+1; j++)
{
NSMutableArray * innerArray = [[NSMutableArray alloc] init];
for ( int i=0; i<stepsX+1; i++) {
SKTexture *t = [SKTexture textureWithImageNamed:[NSString stringWithFormat:@"img_0_%d_%d.jpg", (stepsY-j),(stepsX-i)]];
[innerArray addObject:t];
}
[spriteArray addObject:innerArray];
}
例如,我将有一个二维数组4x23; y轴为四步,x轴为23步;上
- (void) touchesMoved: (NSSet *)touches withEvent:(UIEvent *)event
我正在使用
[sprite setTexture:....];
将正确的纹理设置为可视化;
当我在模拟器上运行时,它工作得很好但是当我尝试使用真实设备时,当我填充spriteArray时,应用程序崩溃并且xcode告诉我“由于内存错误而终止”; 所以我在模拟器中检查了ram的使用,我认识到这是巨大的... 1.5gb;我的纹理是1220x1220 jpg,每个50kb左右....所以似乎某处有一种内存泄漏。
有人可以帮帮我吗?
由于
答案 0 :(得分:1)
不是内存泄漏,只是一个误解:文件大小无所事事纹理内存使用。
1220x1220达到1,488,400像素。默认情况下,纹理使用每种颜色32位(4个字节)。这为每个纹理提供了大约5.7 MB的内存使用量。
4次23是92.
92次5.7 MB为您提供超过500兆字节的内存使用量。
此外,如果Sprite Kit内部仅使用尺寸为2的倍数的纹理,则实际纹理大小为2048x2048(每个纹理16 MB),总纹理内存使用量几乎为1.5 GB。
嗯,那是你的问题。 :)