jsb里出现的 Invalid Native Object的一次bug修复的思考

Cocos2d: jsb: ERROR: File
/Users/dcx_JD/Documents/cocos2d-x-2.2.2/scripting/javascript/bindings/generated/jsb_cocos2dx_auto.cpp:
Line: 4911, Function: js_cocos2dx_CCNode_removeFromParentAndCleanup

Cocos2d: Invalid Native Object

Cocos2d: JS:
/var/mobile/Applications/XXXXXX/Documents/XXX/package/src/XXX/XXX/XXX/XXX:52:Error:
Invalid Native Object

以上为bug报错信息,出现Invalid Native Object这种情况,目前遇到的都是显示对象造成的,此处流程是这样:

在一个方法里创建一个动画armature后,push到了一个数组,然后让动画播放指定的动作,等监听到动画的complete事件后,就让armature.removeFromParent(true),

然后在最终的destory里,通过遍历数组访问到了这个armature对象,此时使用 armature.getParent() 或者
armature.removeFromParent(true)就会报Invalid native obejct的错误。

解决方法就是在动画complete之后,仅仅removeFromeParent是不行的,还要在此时把armature
从数组中剔除,做到没有任何地方对其有引用,从而直接销毁掉,destory里其实就不再处理了

jsb里出现的 Invalid Native Object的一次bug修复的思考

时间: 2024-11-05 16:41:05

jsb里出现的 Invalid Native Object的一次bug修复的思考的相关文章

[Cordova] 无法编译Visual Studio项目里Plugin副本的Native Code

[Cordova] 无法编译Visual Studio项目里Plugin副本的Native Code 问题情景 开发Cordova Plugin的时候,开发的流程应该是: 建立Cordova Plugin 发布到本机文件系统或是Git服务器 使用Visual Studio挂载Plugin 编译并执行项目 在这个开发的过程中,如果在编译并执行项目的这个步骤,发现Plugin的Native Code需要修正.直觉的想法,会是直接修改Cordova项目里Plugin副本的Native Code之后,再

是否可以修改 JavaScript 的本地对象(native object)

本文翻译自RapydScript的作者 Alexander Tsepkov 的博客. 原文地址:http://blog.pyjeon.com/2014/05/17/modifying-native-javascript-objects/ 注:本地对象 (native object) 是指"独立于宿主环境的 ECMAScript 实现提供的对象",比如 Global 和 Math等. 在JavaScript社区,对于JavaScript本地对象(Array, Number, String

Sass Loader报错:ValidationError: Invalid options object. Sass Loader has been initialised using an options object that does not match the API schema.

在vue.config.js中引入sass全局配置后报错vue.config.js代码如下: module.exports = { devServer: { port: 3333, open: true }, css: { loaderOptions: { sass: { data: `@import "@/assets/scss/_variable.scss";` } } } } _variable.scss的代码如下: $theme-color: #33aef0; 组件中的scss

vue cli3使用官方方法配置sass全局变量报错ValidationError: Invalid options object. Sass Loader has been initialised using an options object that does not match the API schema.

我使用官方文档提供的配置sass全局变量,但是报错! vue.config.js代码如下: module.exports = { css: { loaderOptions: { sass: { data: `@import "[email protected]/assets/scss/variables.scss";`, }, } } } variables.scss的代码如下: $color:#fff; 组件代码如下: <style lang="scss"

同一个事务里 查询 已删除但是未提交的数据[bug记录]

前几天犯了个低级错误,在一个事务方法里老是查询不到某条记录,但是debug卡住时,用db工具查,又能查出值. 经过一番折腾,原来是我在同一个事务里 查询 了已删除但是未提交的数据,当然查询不到了!!! 情况是这样的: Service层(spring事务管理配置在这一层,此方法配了PROPAGATION_REQUIRED)有个方法function m()写得很长, 其中有2步是 1. delete from B where objectid ='TestB' 2. select * from A

webpack配置报错:invalid configuration object.webpack has been initialisted using a configuration objcet that does not match thie API schema

最近接收了别人的项目,webpack配置总是报错如下:最后找到了解决办法,在此分享一下: 错误情况: 解决办法: 将package.json里面的colors删除掉即可

SwipeMenuListView在ScrollView里上下滑动导致菜单不能显示完全的bug解决方法

这是因为上下滑动的时候,事件被ScrollView截获了,这时候应该禁止ScrollView截获上下滑动事件,解决方法如下 public class NoRollSwipeMenuListView extends SwipeMenuListView { private GestureDetector mGestureDetector; public NoRollSwipeMenuListView(Context context) { super(context); mGestureDetecto

js -- 捆绑

1.环境配置 主要參考网址: http://cocos2d.cocoachina.com/bbs/forum.php?mod=viewthread&tid=10226&extra=page%3D1&page=2 http://www.cocos2d-x.org/projects/cocos2d-x/wiki/How_to_bind_C++_to_Javascript 一些环境的搭建參考 软件安装与卸载:http://blog.csdn.net/renzhe20092584/arti

Cocos2d-x v3.11 中的新内存模型

Cocso2d-x v3.11 一项重点改进就是 JSB 新内存模型.这篇文章将专门介绍这项改进所带来的新研发体验和一些技术细节. 1. 成果 在 Cocos2d-x v3.11 之前的版本中,使用 JS 语言发布原生版本的用户可能多少都会遇到一个经典的问题:Invalid Native Object,或者遇到一些莫名其妙的 JS 对象失效的崩溃.而解决这些问题,我们给出的解决方案基本是使用 retain / release 来显式声明持有或释放对象,或者是在脚本层更合理得持有对象索引.而在 v