¡Hola!
Cita:
Empezado por donald shimoda
...Freeandnil solo hace
Código Delphi [-]if Assigned(x) then
x.free;
Es decir valida que solo libera cuando esta creado. Es codigo seguro...
|
Disculpa que te corrija
Donald, pero eso
no es lo que hace
FreeAndNil.
Linett ha dado una explicación más cierta; la variable objeto queda con un valor en blanco (Nil) tras su liberación con
FreeAndNil. Es el propio método
Free el que hace una validación de seguridad antes de llamar al destructor
Destroy.
Como ya se dijo, es normal utilizar
FreeAndNil con variables globales, y aunque también puede ser aplicado a variables locales, por lo general sólo utilizamos
Free con éstas. En otras palabras, el uso de
FreeAndNil se justifica cuando existe la posibilidad de que alguna parte del código intente hacer algo con la instancia de objeto apuntada por la variable después de haberse destruido dicha instancia.
Por otro lado, la solución propuesta por
Linett al principio me parece la más adecuada. Cuando mucho haría falta una llamada al método
Clear antes del primer
Add.
Un abrazo sin destruir.
Al González.