我有这个设置:
图层有一个精灵作为孩子。精灵在其init方法中有这个代码:
id fadeOut = [CCFadeOut actionWithDuration:1.0f];
id death = [CCCallFunc actionWithTarget:self selector:@selector(die)];
self.deathAction = [CCSequence actions:fadeOut, death, nil];
[self runAction:deathAction_];
死亡动作调用精灵的'死'方法,其状态变为'死'。
在其更新方法中,图层会检查所有子项并删除那些“死”的子项:
[self removeChild:child cleanup:YES];
问题是子精灵在这一行之后仍然有2的零售额。据我所知,它由CCCallFunc保存。如果我省略了这个deathAction,而是删除了不透明度的精灵(当它们褪色时),代码正常工作并调用dealloc方法。
如何正确使用动作删除精灵?
答案 0 :(得分:1)
您没有显示所有代码。但似乎你在保留对行动的参考,而你可能忘记释放它。
retainCount
众所周知是不可靠的:link所以请不要使用它,当然也不要指望它是准确的。