在我的Lazarus项目中,我使用TPortableNetworkGraphic
类型的变量,它继承自TRasterImage
。到目前为止,我已经使用Free
方法发布它们,但我注意到对于这些类型也存在FreeImage
方法。
这两者有什么区别?我应该使用哪一个,还是应该同时使用它们?
如果我们调查方法,我们会发现以下内容:
方法Free
起源于TObject
。调用它会破坏你的类实例。
方法FreeImage
来自TRasterImage
,等于来自同一类的SetHandle(0)
方法。后者在技术上主要处理FSharedImage
variable(TSharedRasterImage
类实例)及其Handle
属性。换句话说,在调用FreeImage
之后,TPortableNetworkGraphic
类实例的实例仍然是“活着的”。