所以,我在其中一个讨论here中注意到了这个建议。 它说,为了在完成纹理后释放内存,可能的解决方案将是下一个:
我的内存问题来自高分辨率背景和很少的嵌入式滚动视图,因此我尝试了上述实现 - 它在内存方面起作用。
问题是看起来像这样,imageWithContentsOfFile:在视网膜设备中,将@ 2x图像缩放2,所以我需要再次显式缩放0.5。
如何在调用此方法时确保正确缩放?
这是我的代码:
NSString *path = [[NSBundle mainBundle] pathForResource:@"sc_01_bg" ofType:@"png"];
UIImage *img = [UIImage imageWithContentsOfFile:path];
SKSpriteNode *backgroundSprite = [SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImage: img]];
答案 0 :(得分:0)
实际上,只有对这个答案的支持,并且upvote是我的。我现在无法记住为什么我会提出这个答案,因为我从来没有遇到过这样的问题。
如果您仍想使用该答案中陈述的方法,则应使用[UIImage imageNamed:@"imageName"]
代替[UIImage imageWithContentsOfFile:path]
。也许,UIKit并没有使用imageWithContentsOfFile:
方法自动处理视网膜/非视网膜图像。
但基本上你不需要那个。查看LearnCocos2D对该问题的回答。
PS:释放SKScene
使用的内存,只需调用
[self.skView removeFromSuperview];
self.skView = nil;