在Cocos2d-x頭文件xxxxx.h中經常看到NODE_FUNC ( __TYPE__ )和CREATE_FUNC ( __TYPE__ )這兩個宏。一個重寫node()方法,另一個重寫create()方法.
NODE_FUNC ( __TYPE__ )代碼如下:
CC_DEPRECATED_ATTRIBUTEstatic__TYPE__* node() \
{ \
__TYPE__ *pRet = new __TYPE__(); \
if (pRet && pRet->init()) \
{ \
pRet->autorelease(); \
return pRet; \
} \
else \
{ \
delete pRet; \
pRet = NULL; \
return NULL; \
} \
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
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; \
} \
}
從cocos2d-x源碼可以看出其作用:
實現二階段構造:
即先調用構造函數(CCLayer類node方法中調用構造函數),再調用init方法進行初始化(子類中先調用父類的init方法)。
設置其自動釋放內存,方便內存管理,不需要手動去釋放