究竟是dealloc
方法的Cocos2D
场景调用? 正确加载另一个场景?或者在场景加载完成后?
此外,如果我打算覆盖它,那么必须在dealloc方法中?
显然,cocos2D
自动删除场景解除分配时连接到场景的所有节点。但是,如果我打算覆盖它,特别是我必须调用哪些方法? 那么,如何管理我的场景以确保它们无泄漏,100%? 在此先感谢!Cocos2D场景释放
4
A
回答
1
CCScene的释放器遵循与任何其他对象相同的规则。它将在CCScene的引用计数达到零时运行。
默认情况下,场景不关心另一个即将取代它的场景,但如果您正在使用过渡更改场景,则会有一段时间同时存在两个场景。当过渡结束时,过渡将释放它对第一个场景的引用,这可能是最后一个这样的引用,并且第一场景将被释放。
在您的场景释放器中,放置一个CCLOG以查看它的运行时间。我把每一个都确定下来。
通常,手动发布您使用从alloc
,new
或copy
开始的方法创建的任何对象,无论它是否为Cocos2D对象或其他。其他创建方法(例如Cocos2D的node
)不需要手动释放,除非您自己也手动选择了retain
对象,如果您不打算将它作为子节点直接添加到另一个节点,这可能是明智的。如你所说,将一个节点作为孩子添加到另一个并不意味着它需要额外的release
; Cocos2D将处理那个。
1
您在场景类中分配的每个对象都没有作为子项添加到场景中,必须显式释放。
当您用另一个场景对象替换它(使用replaceScene
方法)或从场景堆栈中弹出场景时,会释放一个场景(并且大部分时间将其释放,如果您没有将其保留在其他场景中)。
总是建议查看源代码(其中包含非常有用的注释),并了解如果您自定义场景类别时应完成的操作。
相关问题
- 1. Cocos2d replaceScene不释放旧场景
- 2. Cocos2d不再释放现场
- 3. UIViewController以奇怪的方式释放我的Cocos2d场景
- 4. cocos2d场景dealloc
- 5. SpriteKit场景不被释放
- 6. 更改场景cocos2d
- 7. Cocos2d关闭场景
- 8. cocos2D释放CCScheduler
- 9. UIViewController中的cocos2d场景
- 10. cocos2d场景vs图层
- 11. 清除UIWindow cocos2d场景
- 12. Cocos2d如何切换场景
- 13. Cocos2D-JS场景转换
- 14. cocos2d场景保留问题
- 15. cocos2d 2.x场景retainCount
- 16. 在cocos2D场景中推ViewController
- 17. cocos2d不能改变场景?
- 18. iPhone Cocos2d加载场景
- 19. Cocos2d游戏两个场景之间的替换场景
- 20. 将变量从一个场景传递到其他场景 - Cocos2D
- 21. 如何从另一个场景popScene特定的Cocos2D场景?
- 22. 我可以在移动到另一个场景之前释放场景吗?
- 23. Cocos2d不释放内存
- 24. 无法释放UIView在cocos2d
- 25. 开放场景图
- 26. 页面从cocos2d场景导航到Uiviewcontroller
- 27. Cocos2d:替换的场景仍然有效
- 28. 刷新cocos2d的游戏场景
- 29. 的Cocos2D,UIScrollView的,以及场景
- 30. Cocos2d场景切换和替换问题
哦......我想我现在明白了!不过,现在我拥有一个拥有cocos2D节点的对象的场景。每次我“刷新”它时,我都会使用init。这是否意味着我在泄漏记忆? (我只在dealloc方法中释放一次,再次感谢! – wayway
道歉,你是对的,它是导致保留计数被实现的alloc,而不是init - 但它们通常一起使用。在init中执行 - 通常会在init中创建其他对象,因此如果在再次调用init之前没有释放这些对象,则可能会遇到问题。 –