
概述 cocos2dx提供的
容器有CcArray,CcDiction。cocos2dx既然使用c++语言,为什么不采用stl提高的容器,还要自己去重新实现一套呢。这首先要从cocos2dx的内存管理机制说起,cocos2dx采用引用计数机制,每个对象都维护一个引用计数器,当计数器为0时,该对象就会被自动释放回收。cocos类都继承基类cobject,cobject实现了引用计数器机制,其派生 cocos2dx提供的容器有CcArray,CcDiction。cocos2dx既然使用c++语言,为什么不采用stl提高的容器,还要自己去重新实现一套呢。这首先要从cocos2dx的内存管理机制说起,cocos2dx采用引用计数机制,每个对象都维护一个引用计数器,当计数器为0时,该对象就会被自动释放回收。cocos类都继承基类cobject,cobject实现了引用计数器机制,其派生类都有此功能。 对cocos对象的使用,通过retain方法获得引用,使用完成后,通过release方法释放引用,这是一对 *** 作。cocos实现的容器都完成了这个功能,而c++标准stl模板容器没有此功能。所以推荐使用cocos提供的容器类。cocos提供的容器只能放对象指针。 为了方便对象的引用 *** 作,cocos框架提供了很多宏,简化了代码。其中常用的有:
| CC_SAFE_DELETE(p) | 使用delete *** 作符删除一个C++对象p,如果p为NulL,则不进行 *** 作 |
| CC_SAFE_DELETE_ARRAY(p) | 使用delete[] *** 作符删除一个C++数组p,如果p为NulL,则不进行 *** 作 |
| CC_SAFE_FREE(p) | 使用free()函数删除p,如果p为NulL,则不进行 *** 作 |
| CC_SAFE_RELEASE(p) | 使用release()方法释放Cocos2d-x对象p的一次引用,如果p为NulL,则不进行 *** 作 |
| CC_SAFE_RELEASE_NulL(p) | 使用release()方法释放Cocos2d-x对象p的一次引用,再把p赋值为NulL。如果p已经为NulL,则不进行 *** 作 |
| CC_SAFE_RETAIN(p) | 使用reatin()方法增加Cocos2d-x对象p的一次引用。如果p为NulL,则不进行 *** 作 |
总结
以上是内存溢出为你收集整理的容器全部内容,希望文章能够帮你解决容器所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
评论列表(0条)