cocos2d-x 创建对象的create和 new 的区别

 以 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()


Last modification:January 1st, 1970 at 08:00 am
如果看了这个文章可以让你少加会班,可以请我喝杯可乐
已打赏名单
微信公众号

Leave a Comment