CAObject

2018-09-08 18:34 更新

類說明

CrossApp引擎的根類,主要是進行內(nèi)存的管理,定義部分回調(diào)函數(shù)指針。引擎絕大部分類派生自CAObject,其共同遵從同一套內(nèi)存管理方式。


CAObject 屬性(點擊查看方法介紹)

屬性說明
m_uID對象唯一id
m_uReference引用計數(shù)器
m_uAutoReleaseCount自動釋放引用計數(shù)器
UserData用戶數(shù)據(jù)
UserObject用戶對象
Tag標(biāo)簽
TextTag文本標(biāo)簽


CAObject方法(點擊查看方法介紹)

方法說明
init初始化
release減少對象的計數(shù)器
retain增加對象的計數(shù)器
autorelease設(shè)置自動管理方式
copy復(fù)制對象
isSingleReference實例化對象是否只有一個使用者
retainCount返回對象當(dāng)前計數(shù)器的值
isEqual與指定object實例對象是否相同


CrossApp內(nèi)存管理簡介

CrossApp采用引用計數(shù)器的方式進行內(nèi)存的管理,CAObject的派生類都采用這種方式管理對象。最基本的原則就是誰new/retain,誰就負(fù)責(zé)release,當(dāng)我們創(chuàng)建一個object時,會自動添加一個計數(shù)器,每當(dāng)對這個object進行引用時,都會使用retain方法進行計數(shù)器的加1操作;同樣的當(dāng)釋放對這個object的引用時都會調(diào)用release方法進行計數(shù)器的減1操作,如果引用計數(shù)器m_uReference的值為0,就刪除此object。

此外,CrossApp還提供了另一種自動管理內(nèi)存的方式,當(dāng)我們不確定object在何時釋放時,可以調(diào)用autorelease方法進行延遲釋放object操作,此時object處于自動管理狀態(tài),object被加入到自動釋放池中,系統(tǒng)會在每幀結(jié)束的時候自動對釋放池中的所有object進行一次release操作,如果m_uReference的值為0,則刪除當(dāng)前object。


CAObject 屬性說明

m_uID

類型:unsigned int

解釋:CAObject的實例對象id,采用累加的方式,初值為零,每創(chuàng)建一個object,m_uID值加1,同時在創(chuàng)建一個object時會將當(dāng)前對象的m_uReference初始化為1,將當(dāng)前的m_uAutoReleaseCount初始化為0。


m_uReference

類型:unsigned int    

解釋:引用計數(shù)器,每創(chuàng)建一個object,計數(shù)器的值自動加1。

    

m_uAutoReleaseCount

類型:unsigned int

解釋:是否自動管理object,如果m_uAutoReleaseCount的值為0,非自動管理方式,當(dāng)m_uAutoReleaseCount的值為非0,那么采用自動管理的方式。 

         

UserObject

類型:CAObject*

解釋:用戶對象。


UserData

類型:void*

解釋:用戶數(shù)據(jù)。


Tag

類型:int

解釋:標(biāo)簽。


TextTag

類型:std::string

解釋:文本標(biāo)簽。


CAObject 方法說明

bool init();

返回值:

參數(shù):

解釋:初始化


void retain(void)

返回值:void

參數(shù):

解釋:對引用計數(shù)器m_uReference的值加1。


void release(void)

返回值:void

參數(shù):

解釋:對引用計數(shù)器m_uReference的值減1,如果m_uReference的值為0,則刪除此object。


CAObject* autorelease(void)

返回值:CAObject*

參數(shù):

解釋:將當(dāng)前object設(shè)置為自動內(nèi)存管理方式       

        

CAObject* copy(void);

返回值:CAObject*

參數(shù):

解釋:復(fù)制對象


unsigned int retainCount(void) const

返回值:unsigned int

參數(shù):

解釋:返回當(dāng)前引用計數(shù)器m_uReference的值


bool isSingleReference(void) const

返回值:bool

參數(shù):

解釋:通過與引用計數(shù)器的值做比較,返回object是否只有一個使用者。


virtual bool isEqual(const CAObject* pObject)

返回值:

參數(shù):

類型
參數(shù)名說明
const CAObject*pObject對象

解釋:虛函數(shù),判斷當(dāng)前對象與指定實例化對象是否相同


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號