Foros del Web » Creando para Internet » Flash y Actionscript »

Eliminar una instancia de una vez por todas

Estas en el tema de Eliminar una instancia de una vez por todas en el foro de Flash y Actionscript en Foros del Web. Hola gurús de Flex, tengo una particular duda que he estado intentando solucionar mucho tiempo pero no doy con la tela, así que acudo aquí. ...
  #1 (permalink)  
Antiguo 02/12/2008, 04:11
Avatar de NzO
NzO
 
Fecha de Ingreso: abril-2005
Mensajes: 153
Antigüedad: 19 años, 7 meses
Puntos: 3
Eliminar una instancia de una vez por todas

Hola gurús de Flex, tengo una particular duda que he estado intentando solucionar mucho tiempo pero no doy con la tela, así que acudo aquí.

Imaginaos que creo un boton:
Código:
var nb:Button = new Button();
nb.label = "Prueba";
Ese boton luego lo añado a mi escenario (un canvas que ya tenia creado):
Código:
micanvas.addChild(nb);
Ahora quiero cargarme ese boton porque no voy a usarlo nunca mas:
Código:
micanvas.removeChild(nb);
delete nb;
Se supone que lo he eliminado, pero el boton sigue existiendo y lo puedo volver a añadir:
Código:
micanvas.addChild(nb);


Mi problema esque en mi aplicacion estoy continuamente creando y quitando botones, y despues de un rato usando la aplicacion la memoria aumenta sin parar si no borro por completo los botones y elementos que creo.
¿Hay alguna manera de poder eliminar por completo un elemento?
__________________
NzO=EnZo
isiAJAX & isiXML hechos el uno para el otro.
  #2 (permalink)  
Antiguo 02/12/2008, 15:07
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 11 meses
Puntos: 43
Respuesta: Eliminar una instancia de una vez por todas

Hola NzO !

Me di una vuelta por la documentación para ver algunos detalles del uso del operador delete, encontré algo interesante:

Cita:
Nota: No puedes borrar un objeto, pero los puedes hacer candidato para el 'reolector de basura' removiendo todas la referencias del objeto. La referencia más común a un objeto es la variable que apunta a este. Puedes remover las referencias asignando a la variable la constante NULL. El 'recolector' de basura removera un objeto que ya no tiene referencias.
El recolector de basura de flex muy similar al de Java, por cada variable que tenga referencia al mismo objeto, internamente el recolector tiene un contador que le va diciendo cuantas variables tienes referencia a ese objeto y cada ves que asignes el valor NULL a una variable que apunte a ese objeto, el contador se decrementa y si llega a 0, el recolector elimina el objeto complétamente de memoria, así mas o menos es la cosa.

Un saludote !
__________________
Una contraseña es como la ropa interior. No deberías dejarlas afuera a la vista de otras personas, deberías cambiarla regularmente, y ni se te ocurra prestarla a extraños.
  #3 (permalink)  
Antiguo 03/12/2008, 06:13
Avatar de NzO
NzO
 
Fecha de Ingreso: abril-2005
Mensajes: 153
Antigüedad: 19 años, 7 meses
Puntos: 3
Respuesta: Eliminar una instancia de una vez por todas

Gracias jahepi por el apunte.

Yo tambien he indagado sobre este tema. Ya sé con certeza que no hay manera posible de eliminar algo al instante por completo. Solo puedes hacer que un objeto sea NULL como dices ademas de que tienes que quitarle todos los eventos a ese objeto. Una vez esto el recolector de basura lo borrará.

Algo que no me gusta, me gustaria tener mas control en este tema. Pero es lo que hay.

Lo dicho, muchas gracias jahepi.

Y un saludo.
__________________
NzO=EnZo
isiAJAX & isiXML hechos el uno para el otro.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:31.