cocos2dx引用計數機制

2021-09-07 20:06:51 字數 1090 閱讀 6523

autorelease和release的區別

release是立即釋放引用計數,如果到達0,物件被銷毀。

autorelease是延遲釋放,是為了更好管理記憶體產生的。

關於ref

乙個ref物件new之後,引用計數為1,retain()執行+1,release()執行-1;

autorelease()只是將其放入了當前快取池中及autoreleasepool中。

class cc_dll ref

;ref::ref(): _referencecount(1){}

void ref::retain()

void ref::release() //引用計數較少 如果引用計數==0 則delete this

\#endif

​ delete this;

​ }

}ref* ref::autorelease() //將物件放入當前管理池的最後

關於autoreleasepool

autoreleasepool管理乙個 std::vector列表,新增時只是放入vector 引用計數不發生變化,

clear()遍歷vector呼叫release()

class cc_dll autoreleasepool

;​ bool contains(ref* object) const;

​ void dump();

private:

​ std::vector_managedobjectarray;

​ std::string _name;

​ bool _isclearing;

};

關於poolmanager

儲存乙個std::vector以堆疊的形式進行管理。

class cc_dll poolmanager

;

如何清理

在每一幀繪製完成之後會執行清理工作。

mainloop()

Cocos2d x 記憶體管理 引用計數

引用計數是c c 專案中一種古老的記憶體管理方式。當我8年前在研究一款名叫tcpmp的開源專案的時候,引用計數就已經有了。在cocos2d x中轉殖了一套ccautoreleasepool。有兩點需要注意 只有兩種情況你需要呼叫release 方法 ccsprite create player.pn...

cocos2dx事件分發機制

事件型別 enum class type 事件 型別 enum class type 關於事件 的優先權通過 addeventlistenerwithscenegraphpriority 新增的 優先權為0。通過 addeventlistenerwithfixedpriority 新增的 可以自定義...

cocos2d x記憶體管理機制

c 記憶體機制,採用new關鍵字例項化的物件,必須在不使用的時候手動delete掉,否則new的時候開闢的記憶體就不能被 造成記憶體洩露 npc n1 new npc if exit 0 cocos2d x 記憶體管理的方式,cocos2d x採用引用計數的方式進行記憶體管理,當乙個物件的引用計數為...