iphone – Cocos2D场景释放

什么时候调用Cocos2D场景的dealloc方法?

正好在加载另一个场景时?或者场景加载完毕后?

另外,如果我计划覆盖它,那么dealloc方法必须包含哪些内容?

显然,当场景被释放时,cocos2D会自动删除附加到场景的所有节点.但是,如果我计划覆盖它,特别是我必须调用哪些方法?

那么如何管理我的场景以确保它们无泄漏,100%?

提前致谢! 最佳答案 CCScene的解除分配器遵循与任何其他对象相同的规则.它将在CCScene的引用计数达到零时运行.

默认情况下,场景不关心将要替换的场景,但如果您正在通过转换更改场景,则会有一段时间同时存在两个场景.当转换结束时,转换将释放对第一个场景的引用,这可能是最后一个这样的引用,然后第一个场景将被释放.

在你的场景解除分配器中,放置一个CCLOG以准确查看它何时运行.我在每个中放一个以确保.

通常,手动释放您使用以alloc,new或copy开头的方法创建的任何对象,无论它是否为Cocos2D对象或其他.其他创建方法(如Cocos2D的节点)不需要手动释放,除非您已选择自己手动保留对象,如果您不打算将其作为子项直接添加到另一个节点,则可能是可取的.

正如您所说,将一个节点作为一个孩子添加到另一个节点并不意味着它需要额外的释放; Cocos2D将处理那个.

点赞