gxx_base(一) GxxObject
GxxObject是gxx_base工具集中所有工具类的基类,使得工具类都可以使用智能指针来自动释放内存。
class G2X_CLASSES GxxObject
{
protected:
GxxObject();
public:
virtual ~GxxObject();
virtual void print() {};
void retain();
void release();
protected:
virtual bool init() { return true; }
virtual void objectReleased() {}
public:
virtual std::string describe(bool isUtf8=false) { return std::string(""); }
void _print(const char* x);
void _println(const char* x);
private:
int retainCount;
};
GxxObject的构造函数为protected, 让使用者无法直接创建对象。所有工具类都必须使用 GXX_CREATE_FUNC 来声明类的构造函数和创建函数。创建对应工具类的对象需要使用 类名::create() 来创建,例如:创建一个字典对象, GxxDictionaryPtr dirPtr = GxxDictionary::create();
GxxObject::retain 增加引用计数
GxxObject::release 减少引用计数 当引用计数降为0时,对象自动被释放。
GxxObject::init 引用计数第一次等于1时(对象被创建时)自动调用, GXX_CREATE_FUNC 已经声明了构造函数, 为了能初始化成员变量, 可以重载init方法。
GxxObject::objectReleased 引用计数等于0时 (对象呗释放时)自动调用, GXX_CREATE_FUNC 已经声明了析构函数, 为了能做一些释放操作, 可以重载objectReleased方法。
GxxObject::describe 返回当前对象的一个字符串描述
GxxObject::_print 打印一条调试信息
GxxOjbect::_println 打印一条调试信息自动加上换行