容器

前端之家收集整理的这篇文章主要介绍了容器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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,则不进行操作

猜你在找的Cocos2d-x相关文章