cocos2dx中記憶體管理要注意的地方
1、工廠函式create中要注意使用autorelease,體現 誰取得誰釋放 的原則
2、如果是直接new出來的,add進入到別的node之後,注意release一次(因為new時引用計數是1),這樣在父類進行release時剛好可以釋放掉
3、ccarray ccdictionary 實現了對ccobject的管理,使用之前記得陣列本身要retain,否則陣列會被乾掉;如果obj只在陣列中被管理,obj被放入後記得release一下(因為在放入陣列時已經retain了一次)
初始化ccarray *tmparray = ccarray::array();
tmparray->retain();//
因為ccarray是autorelease的,所以這裡必須retain
增加元素
tmparray>addobject(元素);
刪除tmparray->removeallobjects();
tmparray->release();
使用工廠方法返回的指標,需要自己首先retain一下,這樣就不會記憶體出問題
set指標時的注意
void someclass::setobj(ccobject obj)
注意一定是先retain後release,防止同乙個obj引發的崩潰
cocos2d x記憶體優化
程式包的 體積 優化方法 首先 你需要很清楚當前自己專案什麼地方佔的體積最多,例如動畫序列多少mb 地圖佔多少mb等等,都要提前做乙個check 別總是認為 可能佔的多,要詳細的知道才行!1.採用工具對資源進行 打包 例如texturepacker 等工具。2.採用png壓縮工具等,在打包前對每張進...
cocos2dx 記憶體管理
記憶體管理中經常遇到的問題 記憶體洩露,記憶體溢位。在cocos2dx中用的是引用計數和自動釋放池的技術,由於熟悉objective c語言,所以對這兩個概念不會很陌生。一 引用計數 引用計數是自動記憶體管理的基礎 在物件裡增加乙個引用計數,當外部引用增加時,計數器加1,當外部引用消失時,計數器減1...
cocos2d x 記憶體管理
呼叫了autorelease的物件,將會在自動 池釋放的時候被釋放一次。因為這個操作發生在 mainloop drawscene 後,這時候遊戲中所有的邏輯已經執行完畢,正是釋放無效資源的最佳時機。所以乙個物件被create後,將被放進pool中,其ref 數為1,當遊戲整個邏輯跑完,如果沒有增加r...