FROM://http://blog.csdn.net/jinciyulang/article/details/8631889
閱讀cocos2d-x demo的代碼,我們會看到有些頭文件中使用CREATE_FUNC這個宏,那么它是做什么的呢?在cocos2d-x 又是起什么作用呢?下面我們就一起來看看CREATE_FUNC宏的源代碼:
- /**
- * define a create function for a specific type, such as CCLayer
- * @__TYPE__ class type to add create(), such as CCLayer
- */
- #define CREATE_FUNC(__TYPE__) \
- static __TYPE__* create() \
- { \
- __TYPE__ *pRet = new __TYPE__(); \
- if (pRet && pRet->init()) \
- { \
- pRet->autorelease(); \
- return pRet; \
- } \
- else \
- { \
- delete pRet; \
- pRet = NULL; \
- return NULL; \
- } \
- }
注釋中寫的很明確,為一個類似CCLayer類的特定的類增加一個create函數.我們也可以看到在宏的下面定義了一個create()函數返回的類型就是宏帶入的參數__TYPE__指針類型.那create函數里做了什么呢?它執行了類的構造函數,執行了init()初始化函數,最后又設置創建出的對象為自動釋放內存.這樣其他人在使用這個類的時候,只要是用create()函數創建出來的對象就不用費心去管理釋放內存了.這個宏是不是很好用?