我该如何摆脱SKTextures的?(How do I get rid of SKTextures?

2019-10-19 05:30发布

也许这很容易,但我迷路了。

我有一个项目,我不得不做出这样的使用JPG格式8模拟页面打开全屏动画。 那么,我做的是:

  • 我有一个显示全屏幕上SKSpriteNode
  • 制备8个SKTextures的阵列
  • 使用SKTexture preloadTextures加载它们
  • 一旦他们加载,我用animateWithTextures显示动画
  • 后来,另一种方法去除现场SKSpriteNode。

当我第一次做翻页,它使用一吨的记忆,但是当我在其上运行removeFromParent,内存继续使用。

我.m文件声明此顶部:

SKSpriteNode *pageTurnNode;

因为我希望能够引用它很容易地在这两种方法。

我该如何摆脱那些纹理和诸如此类的东西?

Answer 1:

纹理可能无法从内存中立即释放。 Apparantely雪碧套件采用了缓存系统。 当它认为合适它会删除缓存的纹理。

那什么@prototypical说。



Answer 2:

这似乎是相当有价值的,涉及到这个问题,我觉得。

由+ textureWithImageNamed分配底层存储器:可以或可以不(通常不)被切换到新SKScene时释放。 你不能依靠这一点。 IOS版本由+ textureWithImageNamed缓存存储器:或+ imageNamed:当它认为合适的,例如,当它检测到低存储器状态。

如果你想,只要你与纹理进行释放内存,你必须避免使用+ textureWithImageNamed:/ + imageNamed :. 创建SKTextures替代方法是:

  1. 创建+ imageWithContentsOfFile UIImages:
  2. 通过调用SKTexture创建从所得的UIImage对象SKTextures / + textureWithImage:(的UIImage *)。

从这个答案拉: iOS的7雪碧套件释放内存



文章来源: How do I get rid of SKTextures?