也许这很容易,但我丢失了。

我有一个项目,我必须制作一个使用8 jpgs来模拟页面打开的全屏动画。所以我正在做的是:

  • 我有一个skspriteNode,在全屏上显示
  • 制作8个sktextures的数组
  • 使用sktexture preloadtextures加载它们
  • 一旦它们加载,我使用AnimateWithTextures来显示动画
  • 稍后,另一种方法从场景中删除skspriteNode。

当我第一次执行页面时,它使用一吨内存,但是当我在它上运行removeFromparent时,将继续使用内存。

我的.m文件在顶部声明它:

SKSpriteNode *pageTurnNode;
.

因为我希望能够在这两种方法中轻易引用它。

如何摆脱所有这些纹理和whatnot?

有帮助吗?

解决方案

纹理可能无法立即从内存中释放。显然精灵套件采用缓存系统。它会在看到适合时去除缓存的纹理。

那是什么@prototypical说。

其他提示

这似乎非常有价值,并且涉及这个问题,我觉得。

由+纹理的底层内存为+纹理:5月或5月 切换到新Skscene时,否(通常不是)被释放。你 不能依赖它。 iOS释放缓存的内存 +纹理yithimagenamed:或+ ImageNamed:当它看到适合时,例如当它检测到低内存条件时。

如果您希望在您完成后立即发布的内存 纹理,您必须避免使用+纹理WithImagenamed:/ + ImageNamed :. 一个替代品创建sktextures 是:

  1. 创建UIImages与+ imageWithContentsOffile:
  2. 通过调用sktexture / + resencewithimage从生成的UIImage对象中创建Sktextures :( UIImage *)。

从这个答案中拉了: iOS 7 Sprite套件释放内存

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top