遇到个jsb的bug,全公司的人整整折腾了2天!!
描述:
下面代码,在GC后,程序崩溃,错误log输出如下:
Assertion failure: thing, at /Users/james/Project/Spidermonkey/js/src/gc/Marking.cpp:112
代码:
var FightActionAttack = cc.Class.extend({
init: function (attacker) {
var self = this;
attacker.getAnimation().play("normalAttack");
attacker.getAnimation().setMovementEventCallFunc(this._movementAttackEvent, this);
},
_movementAttackEvent: function (armature, movementType, movementID) {
},
_frameAttackEvent: function (bone, evt, originFrameIndex, currentFrameIndex) {
}
});
原因:
cocos2d-x 2.x版本的jsb中,不能使用继承只cc.Class的对象做CallbackFunc的回调target,
因为这种直接集成自cc.Class的对象做callback回调的target,会把gc搞崩溃。
解决办法是,集成cc.Node
JSB Bug与GC崩溃
本文记录了一个在Cocos2d-x2.x版本中使用JSB时遇到的严重Bug,该Bug导致垃圾回收(GC)过程出现崩溃。具体表现为在特定条件下使用cc.Class.extend创建的对象作为回调函数的目标时,会导致程序在GC时失败。文章详细描述了问题的现象、原因及最终解决方案。
1883

被折叠的 条评论
为什么被折叠?



