类说明
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 属性说明
类型:unsigned int
解释:CAObject的实例对象id,采用累加的方式,初值为零,每创建一个object,m_uID值加1,同时在创建一个object时会将当前对象的m_uReference初始化为1,将当前的m_uAutoReleaseCount初始化为0。
类型:unsigned int
解释:引用计数器,每创建一个object,计数器的值自动加1。
类型:unsigned int
解释:是否自动管理object,如果m_uAutoReleaseCount的值为0,非自动管理方式,当m_uAutoReleaseCount的值为非0,那么采用自动管理的方式。
类型:CAObject*
解释:用户对象。
类型:void*
解释:用户数据。
类型:int
解释:标签。
类型:std::string
解释:文本标签。
CAObject 方法说明
返回值:
参数:
解释:初始化
返回值:void
参数:
解释:对引用计数器m_uReference的值加1。
void release(void)
返回值:void
参数:
解释:对引用计数器m_uReference的值减1,如果m_uReference的值为0,则删除此object。
返回值: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 | 对象 |
解释:虚函数,判断当前对象与指定实例化对象是否相同