@H_502_1@Ref、AutoreleasePool、PoolManager这三个类的作用是管理对象。
所在文件:
CCRef.h,包含:
classCC_DLLClonable、classCC_DLLRef
CCAutoreleasePool.h,包含:
classCC_DLLAutoreleasePool、classCC_DLLPoolManager
重点介绍:Ref、AutoreleasePool、PoolManager三个类。
2、AutoreleasePool可以保存多个Ref对象,可以对里面的对象进行撤销删除,也可以在调试时查看相关信息。
3、PoolManager类是一个单例,用于管理AutoreleasePool。
@H_502_1@·Ref:
@H_502_1@
unsigned int _referenceCount; //记录Ref对象被引用次数,当创建一个Ref对象时_referenceCount=1 void retain(); //_referenceCount+1 void release(); //delete Ref对象并将_referenceCount-1 Ref* autorelease(); //将Ref对象添加到AutoreleasePool 中 unsigned int getReferenceCount() const; //返回当前引用数。 protected : friend class AutoreleasePool ; //AutoreleasePool友元类Ref总结:Ref是Cocos2d-x中许多重要类 (Director、Node、Action、Event等) 基类。Ref主要用于记录对象被引用的次数和对Ref对象的撤销。
@H_502_1@·AutoreleasePool:
@H_502_1@
std::vector< Ref*> _managedObjectArray; //用于保存新增的Ref对象 void addObject(Ref *object); //添加Ref对象到_managedObjectArray中 void clear(); //遍历_managedObjectArray,调阅Ref对象的release()方法 bool contains(Ref * object) const; //判断Ref对象是否在_managedObjectArray void dump(); //debug输出_managedObjectArray的长度,每一个Ref对象被引用次数
@H_502_1@