Layer什么时候要autorelease() 什么时候不要

看 cocos2dx的例程 程序一开始创建主菜单时候
TestController(); 有调用 autorelease
auto scene = Scene::create();
auto layer = new (std::nothrow) TestController();
layer->autorelease();
layer->addConsoleAutoTest();
scene->addChild(layer);
director->runWithScene(scene);

后面从 子菜单返回主菜单时候 主菜单的TestController(); 没有调用 autorelease

auto scene = Scene::create();

auto layer = new (std::nothrow) TestController();
scene->addChild(layer);
layer->release();

Director::getInstance()->replaceScene(scene);

终于搞明白什么是 autorelease 了我自己迷糊了

这个示例不好。
我的建议是绝大数情况下都不要也没有必要用new方式创建对象,因此也不会手动调用release/autorelease方法
用引擎封装好的api,创建的时候用create,然后addChild就不用管了。

记得是addChild(),addChild里有autorelease,场景里的物体,被addChild了就不用自己添加autorelease了:7:

autorelease 就是将 release 自动延后了
在每帧结束后 将自动执行一次 release