create了一个全局变量,何时会自动调用release()?

rt,我创建了两个场景a,b;a场景里利用create()函数在a.cpp里创建了一个全局变量x;发现:把a设为初始场景,从a通过replacescene切换到b没问题,但是反过来从b切换到a就报错了,由于全局变量是编译前创建的,考虑是不是因为b场景切换到a的同时释放了场景内存连同x一起释放掉了,又或者由于autorelease机制在第一个场景释放时release()掉了,特来向各位大神验证猜想~

a场景里利用create()函数在a.cpp里创建了一个全局变量x

这句怎么理解?

x是create出来的,什么类型?Ref的子类?

还是x只是一个简单类型,他在a的create()函数中创建出来?

x是一个create出来的继承Ref的类,即Playerx=Player::create();
然后今天发现如果使用Player
x=new Player;这种形式切换场景时就不会报错…
小白请大神赐教~

继承Ref的类create出来都是autoRelease的,事实上如果你create出来没有增加他的引用的话,程序运行到这一帧的最后就会给他释放掉了,想持有的话需要->retain()一下。

你看下create的实现。先是new了,然后再autorelease了。

去了解下autorelease干了些什么。

看下这篇文章:http://blog.csdn.net/jackystudio/article/details/13765639

具体是这一行

void DisplayLinkDirector::mainLoop()
{
    if (_purgeDirectorInNextLoop)
    {
 _purgeDirectorInNextLoop = false;
 purgeDirector();
    }
    else if (! _invalid)
    {
 drawScene();
 
 // release the objects
 PoolManager::getInstance()->getCurrentPool()->clear();//这一行
    }
}
```

感谢大神们的指导~