方法一:引用计数(Reference Count)
cocos2dx采用的就是引用计数机制,引擎中抽象了一个基类Ref,需要引用计数管理的类都会public Ref继承这个类。Ref的实例包含一个计数器,当新建一个Ref实例的时候,计数器初始化为1,同时Ref提供了修改计数器的接口:
(1)Ref::retain() --计数器加1
(2)Ref::release() --计数器减1,假如减1后计数为0,那么触发delete this,销毁自身
(3)Ref::autorelease() --把实例添加到AutoreleasePool,并在游戏的下一帧对实例的计数做减1操作
(4)Ref::getReferenceCount() --返回实例当前的计数值
方法二:自动回收池(AutoreleasePool)
引擎默认有一个自动回收池,所有通过create()方法生成的对象,会自动添加到这个默认的自动回收池;被加入到自动回收池的对象,计数器会在游戏的下一帧自动调用Ref::release()