Cocos2d-x用了一種引用計數的方式來管理內存對象,通過類Ref、AutoreleasePool和PoolManager來完成。
Ref為引用計數類,其構造函數是protected的訪問類型,當Ref的對象被創建的時候它的引用計數為1
在對象創建的時候會調用create,然後調用autorelease,將對象放入對象池(AutoreleasePool的一個對象中)方便後面的統一管理,
retain增加引用計數,release調用時會立刻減少引用計數
引擎初始化後就會創建一個默認的自動釋放對象列表AutoreleasePool並加入到PoolManager裡面進行管理
每次主循環,都會有一次pool的清理,把那些計數為0的object都刪除掉。這就是cocos2dx中的內存管理方法
PoolManager為單例模式,不用編碼者來維護,由引擎自動完成。
上圖中包含了三個類的主要成員變量和成員函數,其中最後一列匯總白色的為成員函數,橙色的是成員變量,cocos引擎的編碼者命名極其規范,見字釋義,膜拜!可以參照這個圖看源碼。
剖析cocos2d-x之Action實現 http://www.linuxidc.com/Linux/2013-04/82436.htm
Ubuntu下cocos2d-x開發環境搭建及配置 http://www.linuxidc.com/Linux/2013-03/81876.htm