多继承引发的诡异bug (cocos2d-x CCObject)
来源:互联网 发布:java rmi漏洞解决 编辑:程序博客网 时间:2024/06/01 09:51
我有一个Singleton,用于处理下载信息,用到了HttpClient,那么就必须继承自CCObject,然后添加一个对应的函数指针来响应回调。由于同时还需要响应下载模块的信息回调,所以又继承自IDownloadEvent接口。
结果引发了一个非常难查的内存Bug。当回调函数调用后,这个Singleton的所有数据都被篡改了,导致函数内各种崩溃。但是我检查了Singleton的地址,又确实没有被改变,同时看了HttpRequest里面保存的target对象(就是我这个Singleton),它的数据又是正确的(地址跟我的Singleton一样,证明确实是一个对象)。
既然是同一个对象,地址又一样,为什么监视器中显示的变量数据完全不一样呢?
我猜想是由于多继承引发的问题。现在只保留一个对CCObject的继承,然后就解决了问题。
直到现在我还没有查明究竟是什么原因导致这个诡异的bug。但是可以明确多继承确实可能造成一些问题,是应该避免的。同时也说明使用继承的方式来完成监听者模式,在c++中不是一个很好的选择。即便继承的是只有纯虚函数的方法类,但是继承终究是继承,这个与java在语法层面实现接口的概念是不同的。
总结,尽量避免多继承,使用委托的方式完成信息回调而不是继承的方式。
- 多继承引发的诡异bug (cocos2d-x CCObject)
- 多继承引发的诡异bug (cocos2d-x CCObject)
- cocos2d-x中各种诡异BUG的一个原因
- Cocos2d-x基础:CCObject
- Cocos2d-x之 CCObject
- 一个Date对象引发的诡异bug
- 多继承下函数指针强制转换所引发的诡异问题(CCNotificationCenter)
- Cocos2d-x 的CCObject与autorelease 之深入分析
- Cocos2d-x 的CCObject与autorelease 之深入分析
- Cocos2d-x 的CCObject与autorelease 之深入分析
- Cocos2d-x 的CCObject与autorelease 之深入分析
- 从CCObject看cocos2d-x的内存管理机制
- 从CCObject看cocos2d-x的内存管理机制
- cocos2d-x的内存管理和CCObject类
- Cocos2d-x 的CCObject与autorelease 之深入分析(转载)
- Cocos2d-x 的CCObject与autorelease 之深入分析
- 从CCObject看Cocos2d-x的拷贝机制
- Cocos2d-x结构学习(一)CCObject、CCCopying、CCZone
- sql delete 语句 删除键
- private QueryRunner qr=new QueryRunner(JdbcUtil.getDataSource());
- Fedora 17 无法播放mp3 rmvb
- javaWeb_13-Http响应和响应状态行详解
- Eclipse快捷键-----原来Eclipse完全不许用鼠标的,不用羡慕VI了
- 多继承引发的诡异bug (cocos2d-x CCObject)
- pywinauto登陆QQ
- Jsoup 乱码问题解决
- JSP中使用CKEditor3.6入门教程
- Visual Studio 2012 - Visual C++ CMFCToolBar Class
- ios百度地图api地图显示不正常
- C语言中,将结构体指针传入函数后,内存地址没变,内存数据发生变化
- UVA 10912 Simple Minded Hashing
- jQuery easyui layout布局自适应浏览器大小