DELPHIHEAVEN · GUÍA TÉCNICA
TObjectList<T> en Delphi: propiedad y memoria
Una colección de objetos evita duplicaciones y errores de liberación cuando se utiliza correctamente.
Los ejemplos se utilizan como orientación didáctica y se verifican en el IDE y en los dispositivos adecuados antes de incorporarlos a una aplicación.
Comportamiento
TObjectList<T> es una colección ordenada. Con OwnsObjects = True, la lista gestiona la liberación de los objetos que contiene. Por ello, eliminar un elemento de la lista y liberarlo manualmente de nuevo puede producir errores.
Ejemplo simple
type
TProducto = class
public
Codigo: string;
end;
var
Productos: TObjectList<TProducto>;
P: TProducto;
begin
Productos := TObjectList<TProducto>.Create(True);
try
P := TProducto.Create;
P.Codigo := 'A001';
Productos.Add(P);
// La lista administra el objeto incluido.
finally
Productos.Free;
end;
end;
Precauciones
- Se añade la unidad
System.Generics.Collections. - Se decide claramente quién es propietario de cada objeto.
- No se libera una segunda vez un objeto ya destruido por la lista.
- Se evita que la interfaz conserve referencias a objetos eliminados.
Aplicación práctica
PC Shop utiliza objetos de dominio, como TProducto y TVenta. Las listas de objetos deben tener un ciclo de vida único y documentado, tanto si se utilizan desde formularios como desde módulos.
Referencias (APA 7)
Embarcadero Technologies. (s. f.). TObjectList