coco2d-x大部分时候都不需要手动管理内存,创建对象的方法一般是create(),这个方面里面加了autorelease。
但是我昨天使用的时候出现了个错误。
我大概是这么用的
void fun1()
{
m_sprite = Sprite::create("test.png");
}
void fun2()
{
this->addchild(m_sprite);
}
然后系统会crash,提示引用计数为零。
查阅资料后发现,m_sprite这个变量在出fun1的时候会被autorelease掉,所以下面用的时候才会报错。
正确地写法应该是这样的。
~Test()
{
m_sprite->release();
}
void fun1()
{
m_sprite = Sprite::create("test.png");
m_sprite->retain();
}
void fun2()
{
this->addchild(m_sprite);
}
每个成员变量创建好之后先retain一下,然后在析构函数中再release掉。