实现自动垃圾回收的工具主要是Qt对象清理器
,也就是QObjectCleanupHandler
类,它监视多个QObject对象的生命期。当你想知道被别人拥有的QObject对象是否被删除时,这个类就派上了用场。例如引用(referencing memory)了程序中的共享库内存的场合。
为了追踪某些QObject对象,使用add()
添加对象,不再跟踪时使用remove()
。被cleanup handler
追踪的对象在别处被删除后,它会自动将其remove
。要删除所有添加的对象用clear()
或者销毁cleanup handler
,isEmpty()
判断是否其中还有对象。
这个类的源码很简单:
class Q_CORE_EXPORT QObjectCleanupHandler : public QObject
{
Q_OBJECT
public:
QObjectCleanupHandler();
~QObjectCleanupHandler();
QObject* add(QObject* object);
void remove(QObject *object);
bool isEmpty