cocos2d x3 0之object記憶體管理

2021-08-27 15:28:30 字數 1719 閱讀 1726

看object類的實現就行了。

首先映入眼簾的是它們:

protected:

/// count of references

unsigned int _reference;

/// count of autorelease

unsigned int _autoreleasecount;

然後我們先看下_reference都在**被引用:

就是兩個函式retain和release在修改它。

/**

* retains the ownership.

** this increases the object's reference count.

** @see release, autorelease

* @js na

*/inline void retain()

/**

* release the ownership immediately.

** this decrements the object's reference count.

** if the reference count reaches 0 after the descrement, this object is

* destructed.

** @see retain, autorelease

* @js na

*/inline void release()

api提供的注釋說的很清楚,retain增加引用,release減少,當減為0就釋放,這種引用計數的方法到處可見,比如windows裡對資源的管理。

但_autoreleasecount怎麼用的呢?

我們發現它是protected的,吐槽,改為【private的,用setter/getter比較友好。

這個東東是**到處可見的addobejct裡面會改變滴:

void autoreleasepool::addobject(object* object)

array* array::clone() const  

void poolmanager::addobject(object* object)

void autoreleasepool::addobject(object* object)

注意object在構造的時候

object::object()

: _luaid(0)

, _reference(1) // when the object is created, the reference count of it is 1

, _autoreleasecount(0)

兩個引用是不一樣的,程式裡會適當地呼叫retain,不然在autorelease會釋放一次,這要保證reference>0不然要被釋放掉。

嗯,趕腳好麻煩,估計這部分要被乾掉,用c++11自帶的智慧型指標。

cocos2d x 3 0 編譯問題

3.0最主要的問題是它引進了c 11 所有ndk版本必須是r8e版本以上,即使你已經有這些已經準備好,還要注意一點是ndk編譯的時候預設採用ndk toolchain version 4.6的形式去編譯,這個時候就會出現 error thread in namespace std does not ...

cocos2dx 3 0 學習資源

目前看見的cocos2dx 3.0 學習資源 官方的英文 我也在wiki上看了一會,有的還用有道詞典查詢的單詞什麼的。史上最坑爹的遊戲 holdtail 目前資料很少,mac下開發的資源就更少了。如果有朋友看見其他資源可以告訴我啊,謝謝 cocos2dx 3.0基礎知識 cocos2dx 3.0 a...

cocos2d x 3 0建立專案

之前一直用的是cocos2d x 2.3版本,使用tools裡面的create project.py指令碼可以很方便的建立專案。今天更新為3.0後,發現新版建立專案的方式有了很大的改變,於是在這裡記錄一下。在3.0的根目錄下有乙個setup.py的指令碼,用命令列定位到該指令碼所在目錄並執行它 或者...