以 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://dongge.org/blog/104.html
自2017年12月26日起,『转载以及大段采集进行后续编辑』须注明本文标题和链接!否则禁止所有转载和采集行为!