cocos 2dX 中的 autorelease / retain /release 用法小总结。
我们撰写代码是无法避免是要和内存打交道的,内存的使用和释放也就成为了一个问题 ,在cocos中 有如下几种使用方式。
1,autorelease 自动释放池,首先我们来看看相应的开放源码。
当我们对一个对象进行autorelease后,cocos会把这个对象放入内存池,内存池会在用户使用这个对象后自动将对象释放。自动释放池会在下一帧将对象减一,如果没有其他对象使用的话,这个内存池就被释放掉了。
但是有时候我们申请一块内存后并不会马上使用,比如不会马上就某个精灵addChild ,如果我们还是使用autorelease的话在己帧后就会被释放掉了。这时候我们就倾向于使用retain/release组合。
2,retain/release ,同样先看看源码。
通过代码我们可以看到,retain在每一帧后会把对象+1,而release是把对象--,这样就保证了空间不会再几帧后因为未使用就被释放掉了,当使用过后,release也同样会将其释放,不会引起内存泄漏的问题。
所以当我们使用时,根据实际需要自己选择相应的方式进行编程。