帝国塔防2充值界面闪退BUG修复总结(cocos2dx内存管理机制)

游戏充值界面老是闪断,debug调试断点总是断在比较深的位置,也看不出哪里出错。

后来有一次断点断在了程序创建一个提示图片的地方,于是检查代码发现了问题。

修改之前的错误代码:

  1.创建提示的代码:

    m_loading = new NetLoading(this, callfunc_selector(IapShopLayer::downingUpdate)); // m_loading 引用计数为1

    m_loading->setPosition(ccp(1139/2.0f, 640.0f/2.0f));

    m_loading->autorelease(); // m_loading 加入自动管理池
    addChild(m_loading, 1000);

  2.移除提示的代码

    if(m_loading != NULL)
    {
      if(m_loading->getParent()!=NULL)
      {
        removeChild(m_loading,true); // m_loading 引用计数减一,为0,释放此对象
      } 
      m_loading->release(); // m_loading 对象已经不存在,报错
      m_loading = NULL;
    }

错误原因:

m_loading->autorelease();

对象已经采用了自动管理的机制,就不需要手动去调用release()让引用计数减1。

removeChild(m_loading,true);这句代码之后,自动管理机制判断此对象已经没有用了,于是让m_loading引用计数减一,此时m_loading的引用计数为0,被释放

于是,执行m_loading->release()报错。

总结:以后对象的内存管理一直要仔细细心,内存管理方案要么采用手动管理要么采用自动管理,但不能同时使用。(具体使用哪种内存管理方式根据实际情况来定)

cocos2dx内存管理机制参考链接:http://blog.csdn.net/ring0hx/article/details/7946397

时间: 2024-11-08 22:34:14

帝国塔防2充值界面闪退BUG修复总结(cocos2dx内存管理机制)的相关文章

Linux登录图形界面闪退"终极"解决方法

其实是一个笨方法...但很有效 (个人经验,仅供参考) 实测环境:Debian 9 64bit  gnome3 起因是使用apt-get安装了fcitx fcitx-pinyin fcitx-tools,后执行 im-config 配置,又卸载了ibus. 不知道哪里出了问题,登出gnome3后无法再次登入了. 现象: 1.键入密码后,应该是通过进入了,但桌面尚未加载完即闪退回登录界面. 2.root用户可以正常登入 3.等入xfce正常 4.各版本gnome均闪退 5.字符终端正常,各命令使用

Lotus Notes闪退如何修复

很多企业内部都在使用IBM 出品的Lotus Notes 来收发邮件,以及内置的SameTime作为内部交流工具,作为用了多年微软套装产品的我来说,还是有些不适应. 最近遇到一个案例,只要用户登陆sametime,邮件客户端就会闪退,通过网络查找相关解决方案,我尝试了如下方法: 1. 重命名的"workspace"文件夹 2. 删除了".metadata"文件夹 3.删除了cache文件 但是依然无效,找不到问题的根源. 这时候我使出了杀手锏,重装系统.(重做之前,

[转自百度贴吧-本人亲测有效]Adobe XD 打开立即闪退问题修复

出现闪退的原因还是因为缺少C++组件, 下载 DirectXRepairV3.7软件 原文: https://tieba.baidu.com/p/5961511474 软件下载: http://xiazai.zol.com.cn/detail/44/430281.shtml 附上图: 原文地址:https://www.cnblogs.com/linr/p/10345546.html

Ubuntu1804登录界面闪退

目前主力机操作系统已经由Ubuntu 16.04 lts升级到Ubuntu 18.04 lts.由于是跨版本升级过来,而且由unity(个人觉得挺好)替换成了gnome3,经常出点小问题.这次由于安装NVIDIA显卡驱动的原因,造成Ubuntu在登录界面,输入密码点登陆后,又闪回登录界面. 现象是很明显了,而且必现.首先排除一下原因. 1. 建立新用户,用新用户登录,没问题.排除系统故障,说明是用户配置问题.2. 查看登陆日志. sudo ls -althr /var/log/ sudo les

VS2017 VS2019 无法进入安装界面闪退问题(windows7SP1)

如果离线安装 Visual Studio 2017/2019出现“即将完成…一切即将准备就绪.”的画面后,等几秒安装程序没有任何错误提示就关闭了,无法继续安装. 解决方法: 将vs_enterprise__****.exe和vs_setup.exe在属性中“兼容性”改为“以兼容模式运行这个程序”--windows 7. 运行vs_setup.exe, 解决了! https://developercommunity.visualstudio.com/content/problem/73425/vs

iOS 启动连续闪退保护方案

引言 “如果某个实体表现出以下任何一种特性,它就具备自主性:自我修复.自我保护.自我维护.对目标的自我控制.自我改进.” —— 凯文·凯利 iOS App 有时可能遇到启动必 crash 的绝境:每次打开 App 都闪退,无法正常使用App. 为了尝试解决这个问题,微信读书开发了 iOS 连续闪退保护工具:GYBootingProtection,检测连续闪退,在连续闪退出现时,尝试自修复 App: 本文探讨了连续闪退问题的产生原因.检测.修复机制,以及如何在你的项目中引入.测试和使用 GYBoo

Android加密有些机型引发的闪退

加密使用的2d自带加密./frameworks/cocos2d-x/external/xxtea 因为 接sdk的时候,引用了一个sdk的lua 文件.查看之后,编码格式是 utf-8(with BOM )引发的闪退bug 机型:有些低版本的机型,主要Android系统版本是5.1 机型如魅族mx5 .金立金刚等 解决方案1: 方案2 : 把所有文件 改为 utf8

安装Linux 16.04 时,选择好分区后,进到选择地点的界面后,总是闪退,退到最原始的界面

这两天装 Linux 系统,总是遇到一个很蛋疼的问题: 当你累死累活把分区什么的都设置好了之后,在输入了系统名字,开机密码那几项之后,再选择地点的时候(如:选择 "上海"),然后就会卡死,然后,闪退到,刚开始进去安装镜像的那个界面,怎么回事呢? --- 答曰:万恶的Linux,万恶的网线!  将网线拔掉(即:装Linux时,千万不要联网)...就可以了,一切顺利,我尼玛,浪费了很长时间解决这个问题. 以为是系统镜像问题,重新做了多少次系统启动盘:以为是显卡问题,拔掉显卡重新装,还是这样

多个Fragment界面重叠和拍照闪退问题

记录最近遇到的多个Fragment界面重叠和调用系统相机拍照闪退问题,同时总结解决方案. ---------------------------------------------------------------------------------------------------------------------------------------------------------------- 环境:Activity(一个)+Fragment(多个) 问题一:多个fragment出