TRasterImage 变量的 Free 和 FreeImage 之间的区别?
Difference between Free and FreeImage for TRasterImage variables?
在我的 Lazarus 项目中,我使用的变量是
TPortableNetworkGraphic
类型,继承自TRasterImage
。到目前为止,我已经使用 Free
方法发布了它们,但我注意到对于这些类型也存在 FreeImage
方法。
这两者有什么区别?我应该使用哪一个,或者两者都叫?
如果我们调查这些方法,我们会发现以下内容:
方法Free
源自TObject
。调用它会破坏您的 class 实例。
方法 FreeImage
来自 TRasterImage
并且等于来自同一 class 的 SetHandle(0)
方法。后者在技术上主要处理 FSharedImage
变量(TSharedRasterImage
class 实例)及其 Handle
属性。换句话说,在调用 FreeImage
之后 TPortableNetworkGraphic
class 的实例仍然是 "alive".
在我的 Lazarus 项目中,我使用的变量是
TPortableNetworkGraphic
类型,继承自TRasterImage
。到目前为止,我已经使用 Free
方法发布了它们,但我注意到对于这些类型也存在 FreeImage
方法。
这两者有什么区别?我应该使用哪一个,或者两者都叫?
如果我们调查这些方法,我们会发现以下内容:
方法Free
源自TObject
。调用它会破坏您的 class 实例。
方法 FreeImage
来自 TRasterImage
并且等于来自同一 class 的 SetHandle(0)
方法。后者在技术上主要处理 FSharedImage
变量(TSharedRasterImage
class 实例)及其 Handle
属性。换句话说,在调用 FreeImage
之后 TPortableNetworkGraphic
class 的实例仍然是 "alive".