分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
首先要知道的:
在Cocos2d-x中,create()会设置为autorelease() ,如果用create()出来的对象没有人认领,即没有被addchild(),那么在每一帧刷新的时候,Cocos2d-x检测到这个对象没人要,就会把他释放,释放之后我们再去用这个对象,就可能会出现崩溃等问题。
那么一个没人要的对象怎么样保持原来的状态而不被自动释放呢?
用retain(),在create()之后,保持这个对象,就不会被自动释放了。
testSprite = CCSprite::create("HelloWorld.png"); testSprite->retain();
如果我不用create(),直接new一个出来呢?
那一定要先给这个对象加上 autorelease(),因为retain()、release()都是建立在autorelease()基础之上的。
CCSprite* CCSprite::create(const char *pszFileName) { CCSprite *pobSprite = new CCSprite(); if (pobSprite && pobSprite->initWithFile(pszFileName)) { pobSprite->autorelease(); return pobSprite; } CC_SAFE_DELETE(pobSprite); return NULL; }
注意:
只有在对象没有被人认领的时候才需要使用retain()。