我正在将一些TObject
的子类添加到一个TStringList
中,例如通过调用AddObject
。 我希望当我释放列表对象时它们也被释放。 有没有办法实现这个?
我正在将一些TObject
的子类添加到一个TStringList
中,例如通过调用AddObject
。 我希望当我释放列表对象时它们也被释放。 有没有办法实现这个?
TStringList
的 OwnsObjects
属性应该设置为 True
,这样当列表被销毁时就会释放其对象。可以通过调用接受 OwnsObjects
参数的构造函数重载,或在创建后显式设置属性来实现。最好在对象构造的同时设置 OwnsObjects
。
文档对该属性的描述如下:
OwnsObjects 属性指定字符串列表是否拥有存储的对象。如果将 OwnsObjects 属性设置为 True,则 Destroy 析构函数会释放为这些对象分配的内存。
TStrings
类中是否有OwnsObjects
属性,那么答案是否定的。因为这个机制是在TStringList
中实现的,而不是在它的祖先类TStrings
中。 - TLama
OwnsObjects
并不是很难。 - Arioch 'The