TList Local scope
BlitzMax Forums/BlitzMax Programming/TList Local scope| 
 | ||
| ok, here my question, Missile is created in FireMissile method in SpaceShip TYPE (Local Missile:). after that method FireMissile is finished, isn't that Missile object is deleted? because it's declare Local? and why it's left in GameObjectList:Tlist in global? 
Global GameObjectList:TList
Type TMissile Extends TGameObject
    Function Create:TMissile()
        Local Ship::TMissile=New :TMissile
        ListAddLast GameObjectList, Ship       
        Return Ship
    End Function
End Type
Type SpaceShip
   Method FireMissile()
         If MissileDelay<0
     ----->>>>> Local Missile:TMissile=TMissile.Create()
            MissileDelay=10
         End If
    End Method    
End Type 
 | 
| 
 | ||
| no it will never be destroyed. Its put into the list, so unless you remove it from the list again it will not die. | 
| 
 | ||
|  and why it's left in GameObjectList:Tlist in global  Because you now have a reference to the Object in the TList. As long as there's a reference to it, it will never be Garbage Collected. Like what Dream said as I was typing this... :-p | 
| 
 | ||
| Because you put it in the linked list.  Until you remove it from the linked list, it will never be freed. I just wanted to be cool. | 
| 
 | ||
| thanks. got it. | 
| 
 | ||
| to be a bit more explanatory, your only ever dealing with references to objects. so long as there is a reference, the object will still exist. you cannot destroy anything without destroying its references. Its actually quite useful that way. |