内存管理中autorelease()的调用
今天在继承自Node的类中看到了一段代码:
if (p && p->init(textureFile)) {
p->autorelease();
}
else {
delete p;
p = nullptr;
}
去新建的工程hello world工程去看并没有调用autorelease(),于是调试逐语句运行了一下,原来是调用CREATE_FUNC(),下面是它的定义:
#define CREATE_FUNC(__TYPE__) \
static __TYPE__* create() \
{ \
__TYPE__ *pRet = new(std::nothrow) __TYPE__(); \
if (pRet && pRet->init()) \
{ \
pRet->autorelease(); \
return pRet; \
} \
else \
{ \
delete pRet; \
pRet = NULL; \
return NULL; \
} \
}
一目了然,在其中调用了autorelease(),之前没有研究过。
随着C++的深入学习和对引擎的继续了解后面还有很多问题记录在此,以帮助一些和我一样在网络上搜索不到的开发者。