在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方法)。
设置其自动释放内存,方便内存管理,不需要手动去释放