Hola Facundo,
>Hay alguna forma de agregar una variable de instancia,
> en una clase con instancias vivas?
>Desde el Browser no pude? y...
Creo que en Smalltalk/V (y express) no se podía.
El truco comúnmente usado en ese entonces era guardar
las instancias con el ObjectFiler, modificar la clase
y luego volverlas a cargar especificando el mapa apropiado.
>haciendo.... MyClass allInstVarNames: #myInstVarNames,
> pero si bien la agrega...cuando la quiero usar explota todo.
Si, es posible, pues estas modificando la clase y no las instancias.
>Se puede hacer eso?, no encuentro la clase ClassDescription
> que según creo tiene el protocolo para agregar las variables
> de instancias en Smalltalk.
Podrías hacer lo necesario para mutar las instancias
en Smalltalk/V; si hoy no se puede es porque nadie
lo ha puesto.
>Otra cosa, como puedo hacer para forzar el GarbageCollector
Te recomiendo hacer:
1.- cerra todas las ventanas y graba (si es necesario)
el texto que tengas en el Transcript.
2.- Evalua la expresión:
Notifier reinitialize
3.- Evalua la expresión:
Smalltalk unusedMemory
> porque me quedo una instancia de una Clase,
> que no se elimina y entonces, por lo que contaba
> antes, no le puedo agregar una variable de instancia.
Luego de (3) podes analizar los objetos que referencian
las instancias han sobrevivido evaluando:
(miClase allInstances
inject: Set new
into: [:total :each| total addAll: each allReferences; yourself ]
) asArray inspect
Y usando el inspector, darte cuenta que objeto es el que
tiene "ancladas" estas instancias, y/o cambiarlas por otros
objetos eliminando la referencia que te molesta.
Si en realidad estas seguro que no te importa que objeto
las referencie; y queres eliminar la referencia a toda costa,
podes evaluar una expresión como la siguiente:
miClase allInstances do: [:each|
each become: 'instancia de ',miClase name,' obsoleta'
]
suerte,
Ale.
----- Original Message -----
From: "Facundo Vozzi" <facundov79@...>
To: <smalltalking@...>
Sent: Saturday, December 04, 2004 12:41 AM
Subject: [objetos] Smalltalk express
Hola!
Hay alguna forma de agregar una variable de instancia, en una clase con
instancias vivas?
Desde el Browser no pude? y...
haciendo.... MyClass allInstVarNames: #myInstVarNames, pero si bien la
agrega...cuando la quiero usar explota todo.
Se puede hacer eso?, no encuentro la clase ClassDescription que segun creo
tiene el protocolo para agregar las variables de instancias en Smalltalk.
Otra cosa, como puedo hacer para forzar el GarbageCollector porque me quedo
una instancia de una Clase, que no se elimina y entonces, por lo que contaba
antes, no le puedo agregar una variable de instancia.
Saludos, Facundo.
Para más información sobre la Asociación escribir a info@...
Smalltalking es un espacio colaborativo creado para el estudio y desarrollo
en Ambientes de Objetos.
Se sustenta gracias a la participación de sus socios.
Las reglas de etiqueta sobre la lista están en
http://www.smalltalking.net/join/netiquete.htm
Enlaces de Yahoo! Grupos