以 CCLayer 为例,在这个方法中,两者都是可以添加到 scene 中的
StartLayer *startlayer=StartLayer::create();
addChild(startlayer);
StartLayer *startlayer=new StartLayer();
addChild(startlayer);但是两者是有区别的
如果调用的 new() 方法,那么只是调用了 StartLayer 类的构造函数
而如果调用的 create()方法,则是先调用构造函数,然后再调用 init() 函数
这个是因为 create 方法里面已经写好了,就是这个宏定义
#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; \
} \
}最后再赘述一点就是三个的调用顺序
new()->init()->onenter()
版权属于:东哥笔记 - DongGe.org
本文链接:https://blog.dongge.org/104.html
本文采用知识共享署名4.0 国际许可协议进行许可。转载或大段使用必须添加本文链接,否则您将构成侵权!
微信公众号: 东哥org
