析构方法
析构方法用保留字destructor 开头,用来释放实例对象所占用的存储从而销毁的对象。
每一个类都有一个源自TObeject类的命名为Destroy的析构方法,尽管可以在类中声明多个析构方法,但通常应当以覆盖的方式来声明析构方法。
析构方法必须有实例对象引用,而不能有类来引用。
在TObject类中,与实例对象析构相关的方法有两个,一个就是我们在程序中通常使用的Free方法,另一个就是析构方法Destroy。完成实例对象的析构必须使用Destroy方法,而Free方法则可以保证更加安全地调用析构方法从而完成对实力对此昂的析构。二者之间的关系可以从Free方法的实现代码中看出:
procedure TObject.Free; begin if self <> nil then Destroy; end;
Free方法更能确保只有在对象引用费用的情况下构析对象,这就避免了构析一个已经被构析的对象实例或者构析一个尚未创建的对象实例时所带来的问题。因此我们在程序中使用Free方法来完成对象的构析,而不是直接使用Destroy方法。当然在保证不会出现问题的情况下我们也可以直接使用Destroy方法。
需要指出的是构析方法执行之后,只是释放了对象是咧所占用的存储,而并没有将类变量中报讯的引用值清除,在实例对象被释放后,通常应当将类变量的知设置为nil,这可以通过下列代码来完成:
1 ATObject.Free; //执行实例对象的构析 2 ATObject := nil; //清除类变量的引用,设置为nil,nil为对象的空值 3