本站文章转载务必在明显处注明:原文链接: http://blog.youkuaiyun.com/cjsen/article/details/9028907
简言
此博客基于Cocos2d-2.1rc0-x-2.1.3 API
NODE_FUNC(__TYPE__)这个宏在引擎内部被定义。重写node();
CREATE_FUNC(__TYPE__)此宏与上面的相类似,重写create();
另外在2.x版本之前是使用SCENE_NODE_FUNC(HelloWorldScene);(或LAYER_NODE_FUNC(Layer));
源码说明
#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; \
} \
}
#define NODE_FUNC(__TYPE__) \
CC_DEPRECATED_ATTRIBUTE static __TYPE__* node() \
{ \
__TYPE__ *pRet = new __TYPE__(); \
if (pRet && pRet->init()) \
{ \
pRet->autorelease(); \
return pRet; \
} \
else \
{ \
delete pRet; \
pRet = NULL; \
return NULL; \
} \
}
从中可以看出
主要是new一个实例,调用init(),并将它加入autorelease,也就是所有由node()函数得来的指针,都不需要手动的释放(除非自己想要)。