stubma/cocos2dx-classical

CCLabelTTF设置setLinkTarget()或setLinkTargetForAll()后, 从父节点删除后, 不释放, 导致内存泄漏.

Closed this issue · 3 comments

如题.
测试方法, 在~CCLabelTTF()里加断点, 如果没有设置LinkTarget的话, 把label从父节点删除, 则执行到断点.
设置了LinkTarget后, 删除label, 断点不停.

使用CCCallFuncO时, 出现.
使用CCCallFunc时, 不出现.
应该是在CCCallFuncO时, 传入了label的引用, 给后面回调时使用.
那么在onExit()中把m_linkTargets.removeAllObjects()是否可以解决.
我先试试...

经我测试, 在onExit时, 把m_linkTargets.removeAllObjects()和m_defaultTarget = NULL后,
如果之前是用的setLinkTarget(), 则~CCLabelTTF()正常调用.
如果之前时用的setLinkTargetForAll(), 则不调用解构函数.
麻烦看一下.

综合考虑了一下我没有在onExit里面释放这些. onExit会清除链接点击动作, 如果只是暂时把label删掉, 后面还要再加回来的话, 还需要重新调用setLinkTarget.