cocos2d-x3.0之内存拷贝
2013-11-04 14:37
162 查看
3.0模仿object-c的痕迹少了,看上去更C++了,这是官方说滴。
object减少了那么多复杂的功能,我认为还得拆分。不过cocos2d-x正朝着这个方向努力。
比如原来的object:public copying就被干掉了。并不是一切东西我们都希望可拷贝的。
现在换成了组合的模式,比如:
class CC_DLL Array : public Object, public Clonable
Clonable是个纯虚类:
而要如果要拷贝,怎么搞呢,官方的API是好例子:
就是一个深拷贝。额,没什么再说的了。
object减少了那么多复杂的功能,我认为还得拆分。不过cocos2d-x正朝着这个方向努力。
比如原来的object:public copying就被干掉了。并不是一切东西我们都希望可拷贝的。
现在换成了组合的模式,比如:
class CC_DLL Array : public Object, public Clonable
Clonable是个纯虚类:
/** Interface that defines how to clone an object */ class CC_DLL Clonable { public: /** returns a copy of the object */ virtual Clonable* clone() const = 0; /** * @js NA * @lua NA */ virtual ~Clonable() {}; /** returns a copy of the object. @deprecated Use clone() instead */ CC_DEPRECATED_ATTRIBUTE Object* copy() const { // use "clone" instead CC_ASSERT(false); return nullptr;
而要如果要拷贝,怎么搞呢,官方的API是好例子:
class CC_DLL Array : public Object, public Clonable { public: Array* Array::clone() const { Array* ret = new Array(); ret->autorelease(); ret->initWithCapacity(this->data.size() > 0 ? this->data.size() : 1); Object* obj = nullptr; Object* tmpObj = nullptr; Clonable* clonable = nullptr; CCARRAY_FOREACH(this, obj) { clonable = dynamic_cast<Clonable*>(obj); if (clonable) { tmpObj = dynamic_cast<Object*>(clonable->clone()); if (tmpObj) { ret->addObject(tmpObj); } } else { CCLOGWARN("%s isn't clonable.", typeid(*obj).name()); } } return ret; } }
就是一个深拷贝。额,没什么再说的了。
相关文章推荐
- cocos2d-x2.2的TestCpp在IOS 7.0 模拟器上有内存泄露,只能降级到IOS6.1(如何拷贝目录安装模拟器)
- Cocos2D-x设计模式发掘之二:二段构建模式 -----------cocos2d-x3.0正式版本(7.22)
- 关于cocos2d-x3.0和2.0之间的区别
- 一个DC拷贝到内存DC上。
- (译)如何优化cocos2d程序的内存使用和程序大小:第二部分(完)
- 在内存中序列化,反序列化对象实体 来完成对象实体的深拷贝
- cocos2d-x3.0新增的Vector类,cocos2d-x3.0新的数据结构
- Cocos2d-x3.0游戏实例之《别救我》第三篇——循环滚动背景(下)
- 标准C++类std::string的内存共享和Copy-On-Write(写时拷贝)
- 如何在Windows 7平台搭建Android Cocos2d-x3.0开发环境
- [寒江孤叶丶的Cocos2d-x之旅_31]lua的table深拷贝
- xcode 5 cocos2d-x3.0 一 环境搭建
- cocos2d-x内存管理机制剖析
- 深入理解 Cocos2d-x 内存管理
- Cocos2d-x 游戏开发中读取XML文件拷贝
- 如何使用cocos2d-x3.0制作一个滑动图片游戏:第二部分
- Cocos2d-x3.0 lua绑定C++类
- CUDA内存拷贝
- 如何优化cocos2d程序的内存使用和程序大小
- Cocos2d-X3.0 刨根问底(四)----- 内存管理源码分析