iphone - COCOS2d-重用Sprite和Replace场景

标签 iphone objective-c ios data-structures cocos2d-iphone

我有两个场景,两个场景共享相同的背景图像,所以我在两个场景的init方法中都添加了以下代码。一切正常。我的问题是,由于同一图像文件被读取两次,分配了内存并释放了,所以为什么我们不能使用单例模式将其存储在一个 public 位置(spriteManager)并重用该实例呢?如果我这样做,当场景1替换为场景2时,内存将被释放。

我想到的一个问题是保留,但不确定如何以及在何处处理此保留。如果我的方法在处理Common可重复使用的Sprite上是错误的,那么请向我建议正确的方法。我是这个cocos2d的新手,所以我还没有阅读Sprite Sheet的概念,现在我想使所有事情保持简单。

CCSprite *bg = [CCSprite spriteWithFile:@"bg.png"];

第二个问题,我读到在替换两个较重的场景时,由于释放第一个场景内存和分配下一个场景内存中的重叠,会有一些内存泄漏的机会。因此,为避免这种情况,我阅读了我们必须暂停一秒钟以加载轻量级场景(加载场景)。是一个好的解决方案,还是替换场景本身不会造成任何问题。

如果有关于此职位的好文章(重复使用Sprite和Replaceing场景),那将是很棒的。 。

最佳答案

要回答第一个问题,您不需要spriteManager,因为cocos2D已经具有默认的纹理缓存机制(请参阅ccTextureCache类),并且下次调用spriteWithFile时,它将仅从纹理缓存中加载纹理。注意:ccTextureCache通常在出现内存警告时清除其纹理。

其次,如果您正确地重新分配了对象,则替换场景时不应有任何内存泄漏。您是否可以提供指向有关此内容的链接?

关于iphone - COCOS2d-重用Sprite和Replace场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12429025/

相关文章:

objective-c - IOS11 UIContextualAction 放置图片颜色文字

iphone - iOS https认证

ios - 如何使用 ex 更改 UIImageView 的图像。 [触摸 View ]

objective-c - iPad drumcomputer touch->音频延迟

ios - 使用 af_setImageWithURL 在 UICollectionViewCell 中设置图像会消耗大量内存

iphone - 过滤 XML 解析器数据

iphone - 如果我的应用程序使用 "aluminum look"作为其图标,它会被拒绝吗?

iphone - 可达性有时会失败,即使我们确实有互联网连接

iphone - iOS 上的估计电池使用时间

ios - 如何以编程方式从 UIView 获取约束