今天遇到个Adnroid中关于内存回收的问题

我在类初始化数据中初始化了一些actions,并保存在一个成员数组里面,像这样

bool XXX::init()
{
//初始化sprite

//初始化动作
mActionCount =0;
CCActionInterval* pageTurn3D = CCPageTurn3D::create(4, CCSize(20, 20));
mActions = pageTurn3D;

}
然后在另一个方法里调用动作:
void XXX::runActionN(int n)
{
if (n<0 && n>=mActionCount )
return;

mSprite->stopAllActions();
mSprite->runAction(mActions);
}

结果程序退出了
如果换成这样就OK了:
void XXX::runActionN(int n)
{
CCActionInterval* pageTurn3D = CCPageTurn3D::create(4, CCSize(20, 20));
mSprite->stopAllActions();
mSprite->runAction(pageTurn3D);
}
难道这个时候mActions已经被回收了?

在win32版本有同样的问题。不管action在何处初始化,都是不可执行的,除非是初始化后立即执行这个动作。

当然被回收了,在create里,action被aoturelease了,那么,如果你外部引用,不retain,那就会被回收掉
你放到数组里的时候,调用下retain方法,就可以了,就不会被释放掉了