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. |