Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Crear objeto y liberarlo (https://www.clubdelphi.com/foros/showthread.php?t=56847)

jlrbotella 29-05-2008 08:03:46

Crear objeto y liberarlo
 
Hola:

Me gustaría saber que diferencias hay al crear un objeto con

MiObjeto.Create(nil), MiObjeto.Create(self), Miobjeto.Create(Application)

y liberarlo con

MiObjeto.free, MiObjeto.release, MiObjeto.freeonrelease, MiObjeto.Destroy;

:) Muchas Gracias. :)

Neftali [Germán.Estévez] 29-05-2008 09:16:25

Cita:

Empezado por jlrbotella (Mensaje 289809)
Me gustaría saber que diferencias hay al crear un objeto con:

MiObjeto.Create(nil), MiObjeto.Create(self), Miobjeto.Create(Application)

Lo que le pasas al create normalmente es el Owner para ese componente/objeto que estás creando. El owner liberará tu componente cuando él se libere.
Si le pasas Self (que por ejemplo sea un form), cuando ese form se libere, se encargará de liberar al componente/objeto que has creado.
Si le pasas Application, pues lo mismo, pero cuando finalize la aplicación.
Si le pasas nil, significa que no le pasas ningun Owner, y por lo tanto es responsabilidad tuya liberaro cuando ya no lo necesites.

Neftali [Germán.Estévez] 29-05-2008 09:28:27

Cita:

Empezado por jlrbotella (Mensaje 289809)
MiObjeto.free, MiObjeto.release, MiObjeto.freeonrelease, MiObjeto.Destroy;

Aun te has dejado el

Código Delphi [-]
  FreeAndNil(MiObjeto);

Que es la que utilizo yo...;)
Si revisas el código de las clases (vcl/rtl) puedes comprobar en cada caso qué es lo que se hace.


La franja horaria es GMT +2. Ahora son las 12:01:33.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi