也许这很容易,但我迷路了。
我有一个项目,我不得不做出这样的使用JPG格式8模拟页面打开全屏动画。 那么,我做的是:
- 我有一个显示全屏幕上SKSpriteNode
- 制备8个SKTextures的阵列
- 使用SKTexture preloadTextures加载它们
- 一旦他们加载,我用animateWithTextures显示动画
- 后来,另一种方法去除现场SKSpriteNode。
当我第一次做翻页,它使用一吨的记忆,但是当我在其上运行removeFromParent,内存继续使用。
我.m文件声明此顶部:
SKSpriteNode *pageTurnNode;
因为我希望能够引用它很容易地在这两种方法。
我该如何摆脱那些纹理和诸如此类的东西?
纹理可能无法从内存中立即释放。 Apparantely雪碧套件采用了缓存系统。 当它认为合适它会删除缓存的纹理。
那什么@prototypical说。
这似乎是相当有价值的,涉及到这个问题,我觉得。
由+ textureWithImageNamed分配底层存储器:可以或可以不(通常不)被切换到新SKScene时释放。 你不能依靠这一点。 IOS版本由+ textureWithImageNamed缓存存储器:或+ imageNamed:当它认为合适的,例如,当它检测到低存储器状态。
如果你想,只要你与纹理进行释放内存,你必须避免使用+ textureWithImageNamed:/ + imageNamed :. 创建SKTextures的替代方法是:
- 创建+ imageWithContentsOfFile UIImages:
- 通过调用SKTexture创建从所得的UIImage对象SKTextures / + textureWithImage:(的UIImage *)。
从这个答案拉: iOS的7雪碧套件释放内存