您的位置:首页 > 移动开发 > Cocos引擎

关于Cocos的内存管理机制引发一些异常的解决方案

2017-11-16 17:33 1076 查看
错误:引发了异常: 读取访问权限冲突。 this 是 0xDDDDDDDD。或者hero是 0xDDDDDDDD。hero是在GameController里创建的对象

这个的意思是this所指向的内存已经释放了,

GameController* GameController::create(Layer * scene) {
GameController * _ins = new GameController();
_ins->initWithScene(scene);
_ins->autorelease();
return _ins;
}


这是由于这句

_ins->autorelease();


引发的,当没有任何变量指向它的时候,就会自动释放

解决方案就是用一个数组去存放这个控制器

在场景类GameScene里面定义属性

GameController* ctrl;

Vector<GameController*> gcs;


然后在场景初始化的时候

ctrl = GameController::create(this);
gcs.insert(0, ctrl);


这样就不会自动被释放掉了,就可以访问这个控制器在初始化的时候创建的一些对象了,比如主角

//向左移动
void GameController::moveLeft() {
hero->setPosition(hero->getPositionX() - 50, hero->getPositionY());
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: