Me, me, ... I'll volunteer.

Unfortunately, your question "what happens if you try to reference 
props via the stored value in an object after you destroy the object" 
doesn't make sense.  There are two cases.

Case 1)  (The typical case)  Assume a parent script like this:

property prop1
property prop2

on new me, someParameter1, someParameter2
   prop1 = someParameter1
   prop2 = someParameter2
   return me
end

You create the object like this:

   someObjectReference = new(script "someParentScript", someValue, 
someOtherValue)  -- sets the refcount to 1

Later, you destroy the object like this:

  someObjectReference = VOID  -- the "ref count" goes down from 1 to 0.

This means "there are no more variables that point to this block of 
memory".  Director's garbage collector then frees up the memory 
allocated for this object.  You no longer have any object reference 
to this object, so it is not possible for you to attempt to access 
any of its (former) properties.


Case 2)  Lets say you have a parent script like this, in the new 
handler, you to store a copy of "me" into a property variable "pMe" - 
as Kerry originally suggested earler before recanting  :)

-- someParentScript:

property pMe

on new me
   pMe = me  -- this sets the "ref count" to 1
   return me
end

And you create it with the following line

   someObjectReference = new(script "someParentScript")  -- this sets 
the "ref count" to 2


Then later, as you say, you destroy the object like this:

   someObjectReference = VOID  -- in an attempt to the object

But ... the object isn't destroyed because pMe still holds a 
reference to the object.  The ref count just goes from 2 down to 1.

Now, unfortunately, you have an "orphaned" object.  There is this 
object lying around taking up memory, but you cannot get to it 
because there while there still is an object reference - there is no 
way you can get to it.


Irv

At 9:34 AM +0200 10/18/01, Chris Aernoudt wrote:
>"me" is the same stuff as "this" in other proglangs -> pointer to the
>encapsulating object, no?
>So it's pretty useless to store it, because it won't change - I never tried,
>but I even think this might be a dangerous thing to do - what happens if you
>try to access props of an object via the stored value after the object has
>been destroyed?
>Any volunteers? :)
>
>>  What Kerry says here is true.  But why would you do that?  Me is
>>  always me whereever you use me in any method (handler) of the object.
>  > There is no reason to have a property to keep another copy of me.
>

-- 

Lingo / Director / Shockwave development for all occasions. 
          
   (Home-made Lingo cooked up fresh every day just for you.)

[To remove yourself from this list, or to change to digest mode, go to
http://www.penworks.com/LUJ/lingo-l.cgi  To post messages to the list,
email [EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED])
Lingo-L is for learning and helping with programming Lingo.  Thanks!]

Reply via email to