cocos2d-x学习笔记
发布时间:2020-12-14 19:00:02 所属栏目:百科 来源:网络整理
导读:印象笔记链接: http://app.yinxiang.com/l/AAXdkdFkFV1L-Y6jsHAGUegJenwyqPc9SzQ/ 印象笔记搬运: cocos2d::Vector 1、底层实现是用std::vector 随机访问O(1) 将元素插入到尾部或者删除尾部的元素,O(1) 随机插入或删除O(n) 2、T必须是继承自Cocos2d::objec
印象笔记链接: http://app.yinxiang.com/l/AAXdkdFkFV1L-Y6jsHAGUegJenwyqPc9SzQ/
印象笔记搬运:
cocos2d::Vector
1、底层实现是用std::vector
随机访问O(1)
将元素插入到尾部或者删除尾部的元素,O(1)
随机插入或删除O(n)
2、T必须是继承自Cocos2d::object类型的指针,因为已经将cocos2d-x的内存管理模型集成到了Cocos2d::Vector<T>
3、内存管理
警告
:
cocos2d::Vector<T>
并不是
cocos2d::Object
的子类,所以不要像使用其他cocos2d类一样来用retain/release和引用计数内存管理
4、使用
(1)警告:
并没有重载[]操作,所以不能直接用下标[i]来获取第i位元素。
5、
cocos2d::Mapcocos2d::Map<K,V>() 作为参数传递时,将它声明为常量引用const cocos2d::Map<K,V>()& cocos2d::Object 的子类指针,不能用其他的类型包括基本类型。 cocos2d::Value
cocos2d::Value
底层用一个统一的变量来保存任意基本类型值
注意
不能像其它cocos2d类型一样使用retain/release和refcount内存管理
CCArray
remove和fastRemove有什么区别,可以看看源代码,remove是从CCArray中完全的移除,fastRemove只是将CCArray中对应的对象释放掉了,没够改变整个CCArray的结构。从代码上来看,区别在于删除元素之后,是否把数组之后的元素向前移动覆盖掉之前位置的元素。 代码上的差别如下所示:
重点:内存管理
Cocos2d-x中的引用计数(Reference Count)和自动释放池(AutoReleasePool)使用静态构造函数CCSprite::create(“player.png”)是一个使用静态构造函数的例子。所以在Cocos2d-x中所有的类,除了单例,都提供了静态构造函数,这些静态构造函数包含下面4项操作:
如果一个用静态构造函数创建的指针对象要在全局使用 那么要加上retain 并且在析构函数的地方加上 release()
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |