Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa SKTexture textureWithImageNamed使用了太多内存_Cocoa_Memory_Memory Leaks_Sprite Kit_Sktexture - Fatal编程技术网

Cocoa SKTexture textureWithImageNamed使用了太多内存

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

我正在尝试用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];
}
我正在使用

[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:....];