-

类说明

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对象

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