看一個連連看的代碼。裏面有一些不熟悉的地方,須要查看,隨手記錄下。備忘dom
1 CREATE_FUNC宏函數
在代碼裏常常看到使用這個宏: CREATE_FUNC(BaseLayer);spa
1 /** 2 * define a create function for a specific type, such as CCLayer 3 * @__TYPE__ class type to add create(), such as CCLayer 4 */ 5 #define CREATE_FUNC(__TYPE__) \ 6 static __TYPE__* create() \ 7 { \ 8 __TYPE__ *pRet = new __TYPE__(); \ 9 if (pRet && pRet->init()) \ 10 { \ 11 pRet->autorelease(); \ 12 return pRet; \ 13 } \ 14 else \ 15 { \ 16 delete pRet; \ 17 pRet = NULL; \ 18 return NULL; \ 19 } \ 20 }
註釋中寫的很明確,爲一個相似CCLayer類的特定的類增長一個create函數.咱們也能夠看到在宏的下面定義了一個create()函數返回的類型就是宏帶入的參數__TYPE__指針類型.那create函數裏作了什麼呢?它執行了類的構造函數,執行了init()初始化函數,最後又設置建立出的對象爲自動釋放內存.這樣其餘人在使用這個類的時候,只要是用create()函數建立出來的對象就不用費心去管理釋放內存了.指針
屬於二段構建模式:參考http://www.ityran.com/archives/2020code
2 cocos2d-x中隨機函數對象
2.1 CCRANDOM_0_1() [0,1]blog
1 int num1=CCRANDOM_0_1()*35; //[0,35]
2.2 arc4random() 內存
1 nt num=arc4random()%36;//[0,35]
可是CCRANDOM_0_1()每次請求到的數值都是同樣的。而arc4random() 每次的都不同。ci