Estoy un poco desconcertado sobre qué usar para almacenar objetos en una lista. Hasta ahora he usado TList
y he liberado cada elemento en un bucle. Luego descubrí TObjectList
que hace esto automáticamente desde Free
. Entonces vi esto desde el doc de TList.Clear
:Borrar un TList o una TObjectList
llamada
Clear
para vaciar la matriz de artículos y establecer elCount
a 0.Clear
también libera la memoria utilizada para almacenar la matrizItems
y establece elCapacity
a 0.
Así que es básicamente lo mismo. Así
para TList
mylist.Clear;
myList.Free;
es el mismo que para TObjectList
?
myList.Free;
Puede TObjectList
sólo se puede utilizar para los artículos como clases o puedo guardar los registros?
La parte que cita es solo "básicamente la misma" si no lee la documentación TObjectList cuidadosamente: "Si la propiedad OwnsObjects se establece en true (valor predeterminado), TObjectList controla la memoria de sus objetos, liberando un objeto cuando se reasigna su índice, cuando se elimina de la lista con el método Eliminar, Eliminar o Borrar, o cuando la instancia TObjectList se destruye a sí misma ". La documentación de TList no dice nada sobre ese comportamiento. Esa es la diferencia fundamental entre las dos clases. –