cocos2d-x 在CCSequence中使用CCCallFunc时的release BUG
2011-11-09 13:02
302 查看
猴子原创, 欢迎转载,转载请在明显处注明! 谢谢。
原文地址:http://blog.csdn.net/yanghuiliu/article/details/6951984
项目中以前一直有个BUG,就是就我使用完CCSequence后,在析构里面release掉的时候总会BUG,之前没时间弄,直接注释了。
今天重新又遇到这个问题,在一哥们的帮助下,找到了原因。但是好的解决方暂时没有。
描述下问题,
代码某处我创建了一个队列action,当action执行完毕后会回调callBackAction函数。功能很简单。
但是当我在析构里面mAction->release();时就出错了,纠结半天才知道,当我runAction(mAction)结束后,CCCallFunc会autoRelease掉。那么在析构的时候,我执行mAction->release();时,当初创建的CCCallFunc会被再次release,但是这个CCCallFunc在前面已经被autoRelease了。这个时候就会报错。
不过呢,CCSequence里面放的都是action时,就不会出这个问题,但action和CCCallFunc都是继承同一个基类,为什么这个会出问题?还不是很清楚。
也许你还会想到析构的时候使用CC_SAFE_RELEASE(),你能想到这很不错,但是也不能解决上面的问题。
先看看它是实现
现在知道了吧,他只是判断了传进去的对象是否为空。
OK,就这样吧,记录一笔,午休时间Over,工作中....
原文地址:http://blog.csdn.net/yanghuiliu/article/details/6951984
项目中以前一直有个BUG,就是就我使用完CCSequence后,在析构里面release掉的时候总会BUG,之前没时间弄,直接注释了。
今天重新又遇到这个问题,在一哥们的帮助下,找到了原因。但是好的解决方暂时没有。
描述下问题,
mAction= CCSequence::actions(action, CCCallFunc::actionWithTarget(this,callfunc_selector(MyClass::callBackAction)),NULL); mAction->retain();
代码某处我创建了一个队列action,当action执行完毕后会回调callBackAction函数。功能很简单。
但是当我在析构里面mAction->release();时就出错了,纠结半天才知道,当我runAction(mAction)结束后,CCCallFunc会autoRelease掉。那么在析构的时候,我执行mAction->release();时,当初创建的CCCallFunc会被再次release,但是这个CCCallFunc在前面已经被autoRelease了。这个时候就会报错。
不过呢,CCSequence里面放的都是action时,就不会出这个问题,但action和CCCallFunc都是继承同一个基类,为什么这个会出问题?还不是很清楚。
也许你还会想到析构的时候使用CC_SAFE_RELEASE(),你能想到这很不错,但是也不能解决上面的问题。
先看看它是实现
#define CC_SAFE_RELEASE(p) if(p) { p->release(); }
现在知道了吧,他只是判断了传进去的对象是否为空。
OK,就这样吧,记录一笔,午休时间Over,工作中....
相关文章推荐
- cocos2d-x 在CCSequence中使用CCCallFunc时的release BUG
- cocos2d-x 在CCSequence中使用CCCallFunc时的release BUG
- cocos2d-x中CCCallFunc CCCallFuncN CCCallFuncND的区别和使用示例
- cocos2d-x中CCCallFunc CCCallFuncN CCCallFuncND的区别和使用示例
- cocos2d-x中CCCallFunc CCCallFuncN CCCallFuncND的区别和使用示例
- Cocos2d-x编程中CCRemoveSelf与CCCallFunc系列函数不能一起使用
- cocos2d-x中CCCallFunc CCCallFuncN CCCallFuncND的区别和使用示例
- Cocos2d-x 游戏开发之巧用CCDelayTIme实现多个action有序执行,使用CCCallFunc添加action回调
- cocos2d-x中CCCallFunc CCCallFuncN CCCallFuncND的区别和使用示例
- cocos2d-x中CCCallFunc CCCallFuncN CCCallFuncND的区别和使用示例
- cocos2d-x中CCCallFunc CCCallFuncN CCCallFuncND的区别和使用示例
- Cocos2D-x游戏开发之八:事件连续执行:CCMoveBy CCCallFunc CCSequence
- cocos2d-x中CCCallFunc CCCallFuncN CCCallFuncND的区别和使用示例
- cocos2d-x CCCallFunc系列函数的应用
- cocos2d-x CCCallFunc系列函数的应用
- cocos2d中CCCallFunc、CCCallFuncN和CCCallFuncND的区别
- cocos2d-x——CCCallFunc家族例子
- Cocos2d-x之 CCCallFunC家族
- CCCallFunc和CCSequence
- cocos2d-x CCCallFunc系列函数的应用