众所周知,Cocos2dx的内存管理采用的是类似OC的谁申请,谁释放的原则,理论上只要符合这个规则就不会出现内存泄露。但是Cocos2dx还采用了半自动化的内存管理机制,就是在Create的时候,执行autorelease,这个函数的作用是在下一帧将这个变量的引用计数减一,如果没有其他引用的话,就等于释放掉了。
如果要他不释放,那要怎么做呢?当然就是用retain\release组合了,这个组合可以保证你的变量在你需要的时候不被释放掉,在你不需要的时候手动释放。好处还是有很多的,比如在使用多线程的时候,由于Cocos2dx的内存管理池并不支持多线程,所以很可能你的程序在运行多线程的时候,在不知道什么地方,就把你的一些变量自动释放掉了,所以就需要retain来保证不被释放。
写retain\release组合是一个好习惯。