【问题标题】:Proper Memory Management for this line? (Cocos2D)这条线的正确内存管理? (Cocos2D)
【发布时间】:2012-06-16 21:19:15
【问题描述】:

我在 Xcode 中得到以下行作为泄漏:

someSprite = [[CCSprite alloc] initWithFile:(NSString*)obj];

我知道我在那里分配它,但我认为 Cocos2D 处理了所有的内存管理。无论如何,我应该如何正确处理那条线以防止泄漏?

我应该简单地使用自动释放还是还有更多?

谢谢!

【问题讨论】:

  • 如果您使用的是 ARC,那么这段代码就可以了。

标签: ios memory-management cocos2d-iphone ccsprite


【解决方案1】:

Cocos2D 不会为您处理内存。但是,我认为您可以使用自动引用计数 (ARC) 来摆脱自己处理内存的麻烦。然后你可以使用 Cocos2d 作为静态库,因为 cocos2d 不支持 ARC。

如果您想在没有 ARC 的情况下解决您的问题,只需插入一个自动释放。如果它是一个实例变量,请在你的 dealloc 方法中释放它。

【讨论】:

  • 我一开始还以为是Cocos2d帮我处理了内存,其实不然。然而,它确实释放了添加到场景中的所有子项(图层、精灵)。而且由于大多数对象通常是某种孩子,因此您通常不需要关心记忆。
  • 要在 cocos2d 项目中启用 ARC,请按照以下说明操作:learn-cocos2d.com/2012/04/… 或者简单地使用在所有项目中都启用了 ARC 的 Kobold2D (kobold2d.com)。
【解决方案2】:

通常,最好使用返回自动释放对象的静态构造函数。对于您的情况,它将是

[CCSprite spriteWithFile:(NSString*)obj];

将其添加到任何父级时都会保留

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多