TObjectList en Delphi: propiedad y memoria

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. RAD Studio Documentation.

Índice de guías Proyecto relacionado