我正在使用cocos2d开发iPhone游戏。
当玩家四处走动并通过做事得分时,我会导致很少的CCLabelBMFont实例出现然后淡出(CCFadeOut)。这些CCLabelBMFont实例是添加到图层的精灵。
我是否“泄漏”了内存或其他任何东西,因为它们在完成CCFadeOut操作后没有从图层中删除淡出的精灵,或者它们是否已经消失,或者不需要被视为“有效”?
答案 0 :(得分:1)
CCFadeOut完成后,图层将保持现在透明的标签。之后您必须手动将其从图层中删除,除非您计划稍后将其淡化,在这种情况下您可以保留它。
这是低效的内存使用,而不是内存泄漏。
您没有导致内存泄漏,因为在取消分配图层时,它会释放其子节点,包括标签,假设您没有以不触发保留的方式实例化标签。
更新:如何在淡出标签后删除标签
将CCFadeOut替换为如下所示的CCSequence:
[yourLabel runAction:[CCSequence actions:[CCFadeOut actionWithDuration:DURATION], [CCCallFuncN actionWithTarget:self selector:@selector(removeLabel:)], nil]];
现在实现新的处理程序removeLabel:并删除标签。它以标签为参数。
答案 1 :(得分:0)
CCFadeOut
不会移除或释放你的精灵,一旦他们的目的结束你应该这样做。
事实上,没有动作会释放/删除其他对象。他们只是在操纵它们。