看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的指令碼,用命令列定位到該指令碼所在目錄並執行它 或者...