Hi lanas,

There are several aspects to your question that need answering.

First, the garbage collector will remove any object that is not referenced by 
another object.

Each time you doit in a workspace you will create a new object. 
Each time you assign that object to a variable it will replace the old object 
in that variable. The old object may at this point have no more references. 
Then it will be garbage collected.

Second, in the workspace menu there is an item

"reset variables"

choosing this causes that workspace to forget all of the variable assignments 
it was remembering because of doits. Then they may have no other references and 
be garbage collected.

Thirdly, one of my favorite styles of programming is to save my current work in 
projects. This saves code, morphs, browsers that are associated with my 
project. Later I load them back in to a fresh image. The context is that I am 
trying to always run the project in a fresh environment to assure against 
contamination from other work. Or to insure that the project works in a fresh 
system update. In this context it is wise to clean up my project before I save 
it. That way it has the best chance of reloading over an externally changing 
system environment.

So I have a big red button. In it I put the following mouse up code:

(SystemWindow windowsIn: World satisfying: [:w | w model canDiscardEdits and: [ 
w model notNil ] ])
                do: [:w | w delete] .

World submorphsDo: [:each |
        each model class = Workspace ifTrue: [ each model initializeBindings ]  
] .

The first part removes any browsers etc that I am finished with.
The second resets all my workspace variables. That way I don't save my 
temporary references. This is what you were concerned with.

For the button I use a starmorph reshaped into a hexagon and recolored to be 
red. The red halo menu>extras>addMouseUpAction allows me to place the action 
into the star. 

In the USA a red hexagonal sign is the symbol for a stop sign. I make the 
button look like that so I remember to think twice before pressing it. But if I 
am about to save a project I want things sparse and clean.

hth,

Yours in curiosity and service, --Jerome Peace


--- On Mon, 2/1/10, lanas <[email protected]> wrote:

> From: lanas <[email protected]>
> Subject: Re: [Newbies] Get rid of an object
> To: "A friendly place to get answers to even the most basic questions about 
> Squeak." <[email protected]>
> Date: Monday, February 1, 2010, 7:45 PM
> Le Lundi, 1 Février 2010 19:39:06
> -0500,
> lanas <[email protected]>
> a écrit :
> 
> >   When creating and testing objects in
> the Workspace, what is the
> > procedure for getting rid of any ?  
> 
> I noticed that if I create the following and inspect it:
> 
> myCar := Car new.
> myCar setCompany: 'Renault'.
> myCar addEngine: 'Renault V4'.
> myCar addDriveTrain: 'Renault DriveTrain'.
> 
> myCar will have these variables set.
> 
> Now, if I 'do it' once more on the first line the inspect
> window will
> still show the same variables being set.  If I open
> another inspect
> window on myCar I get the new object, without any variables
> yet set.
> 
> So it looks like objects of the same name are considered
> separate
> entities.  I'd have thought that perhaps doing a 'do
> it' on myCar a
> second time would have re-initialized the first existing
> object.
> 
> If I create 25 myCar for various tests, then there'll be 25
> myCar
> objects laying around in the image ?  How to get rid
> of them ?
> 
> Al
> _______________________________________________
> Beginners mailing list
> [email protected]
> http://lists.squeakfoundation.org/mailman/listinfo/beginners
> 



_______________________________________________
Beginners mailing list
[email protected]
http://lists.squeakfoundation.org/mailman/listinfo/beginners

Reply via email to