当前位置:K88软件开发文章中心编程语言APP编程CrossApp → 文章内容

CAObject

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-23 13:52:56

由 ?﹏???ζ???﹏﹏? 创建, 最后一次修改 2016-09-08 类说明CrossApp引擎的根类,主要是进行内存的管理,定义部分回调函数指针。引擎绝大部分类派生自CAObject,其共同遵从同一套内存管理方式。CAObject 属性(点击查看方法介绍)属性说明m_uID对象唯一idm_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对象解释:虚函数,判断当前对象与指定实例化对象是否相同

CAObject