【发布时间】:2012-09-14 17:08:00
【问题描述】:
我有 2 个场景,两个场景共享相同的背景图像,所以我在两个场景的 init 方法中都有以下代码并添加。一切正常。我的问题是,既然同一个图像文件被读取了两次,分配了内存并解除了分配,那么为什么我们不能使用单例模式将它存储在一个公共位置(spriteManager)并重用该实例?如果我这样做,当场景一被场景二替换时,内存将被释放。
我想到的一个是保留,但不确定如何以及在何处处理此保留。如果我的处理通用可重用精灵的方法是错误的,那么请建议我正确的方法来做同样的事情。我是这个 cocos2d 的新手,所以我还没有阅读 sprite sheet 的概念,现在我想保持一切简单。
CCSprite *bg = [CCSprite spriteWithFile:@"bg.png"];
第二个问题,我在替换两个重场景时阅读,由于释放第一个场景内存和分配下一个场景内存的重叠,会有一些内存泄漏的机会。因此,为了避免这种情况,我读到我们必须暂停几秒钟来加载轻量级场景(加载场景)。这是一个好的解决方案还是替换场景本身不会产生任何问题。
如果有一篇关于这篇文章标题的好文章(重用 Sprite 和替换场景),那就太好了。 .
【问题讨论】:
标签: iphone objective-c ios data-structures cocos2d-iphone