Cocoa SKTexture textureWithImageNamed使用了太多内存
我正在尝试用spriteKit制作一种360°可视化工具。在我的场景中,我创建了一个Cocoa SKTexture textureWithImageNamed使用了太多内存,cocoa,memory,memory-leaks,sprite-kit,sktexture,Cocoa,Memory,Memory Leaks,Sprite Kit,Sktexture,我正在尝试用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++) { S
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];
}
我正在使用
[sprite setTexture:....];
设置要可视化的正确纹理
当我在模拟器上运行它时,它工作得很好,但当我在真实设备上尝试时,当我填充spriteArray时,应用程序崩溃,xcode告诉我“由于内存错误而终止”;
所以我检查了ram在模拟器中的使用,我认识到这是巨大的。。。1.5gb;我的纹理是1220x1220JPG,每个大约50kb。。。。因此,似乎某个地方存在某种内存泄漏
谁能帮帮我吗
谢谢不是内存泄漏,只是一个误解:文件大小与纹理内存使用无关 1220x1220相当于1488400像素。默认情况下,纹理每种颜色使用32位(4字节)。这为每个纹理提供了大约5.7 MB的内存使用 4乘以23等于92 92乘以5.7 MB,您的内存使用量远远超过500 MB 此外,如果Sprite工具包内部仅使用尺寸为2的倍数的纹理,那么实际纹理大小将为2048x2048(每个纹理16 MB),并且纹理内存的总使用量几乎正好为1.5 GB 嗯,这是你的问题。:)
[sprite setTexture:....];