JSRUN 用代码说话

CAObject

编辑教程

CAObject

类说明

CrossApp引擎的根类,主要是进行内存的管理,定义部分回调函数指针。引擎绝大部分类派生自CAObject,其共同遵从同一套内存管理方式。

CAObject 属性

属性 说明
m_uID 对象唯一id
m_uReference 引用计数器
m_uAutoReleaseCount 自动释放引用计数器
UserData 用户数据
UserObject 用户对象
Tag 标签
TextTag 文本标签

CAObject方法

方法 说明
init 初始化
release 减少对象的计数器
retain 增加对象的计数器
autorelease 设置自动管理方式
copy 复制对象
isSingleReference 实例化对象是否只有一个使用者
retainCount 返回对象当前计数器的值
isEqual 与指定object实例对象是否相同

CrossApp内存管理简介

CrossApp采用引用计数器的方式进行内存的管理,CAObject的派生类都采用这种方式管理对象。

最基本的原则就是谁new/retain,谁就负责release,当我们创建一个object时,会自动添加一个计数器,每当对这个object进行引用时,都会使用retain方法进行计数器的加1操作

同样的当释放对这个object的引用时都会调用release方法进行计数器的减1操作,如果引用计数器m_uReference的值为0,就删除此object。

此外,CrossApp还提供了另一种自动管理内存的方式,当我们不确定object在何时释放时,可以调用autorelease方法进行延迟释放object操作,此时object处于自动管理状态,object被加入到自动释放池中,系统会在每帧结束的时候自动对释放池中的所有object进行一次release操作,如果m_uReference的值为0,则删除当前object。


CAObject 属性说明

m_uID

类型:unsigned int

解释:CAObject的实例对象id,采用累加的方式,初值为零,每创建一个object,m_uID值加1,同时在创建一个object时会将当前对象的m_uReference初始化为1,将当前的m_uAutoReleaseCount初始化为0。

m_uReference

类型:unsigned int

解释:引用计数器,每创建一个object,计数器的值自动加1。

m_uAutoReleaseCount

类型:unsigned int

解释:是否自动管理object,如果m_uAutoReleaseCount的值为0,非自动管理方式,当m_uAutoReleaseCount的值为非0,那么采用自动管理的方式。

UserObject

类型:CAObject*

解释:用户对象。

UserData

###

类型:void*

解释:用户数据。

Tag

类型:int

解释:标签。

TextTag

类型:std::string

解释:文本标签。


CAObject 方法说明

bool init();

返回值:

参数:

解释:初始化

void retain(void)

返回值:void

参数:

解释:对引用计数器m_uReference的值加1。

void release(void)

返回值:void

参数:

解释:对引用计数器m_uReference的值减1,如果m_uReference的值为0,则删除此object。

CAObject* autorelease(void)

返回值:CAObject*

参数:

解释:将当前object设置为自动内存管理方式

CAObject* copy(void);

返回值:CAObject*

参数:

解释:复制对象

unsigned int retainCount(void) const

返回值:unsigned int

参数:

解释:返回当前引用计数器m_uReference的值

bool isSingleReference(void) const

返回值:bool

参数:

解释:通过与引用计数器的值做比较,返回object是否只有一个使用者。

virtual bool isEqual(const CAObject* pObject)

返回值:

参数:

类型 参数名 说明
const CAObject* pObject 对象

解释:虚函数,判断当前对象与指定实例化对象是否相同

JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟