Attentive viewers will know that I found a reason to buy Max, but I'd be lying if I said that my familiarity with OOP was it. The fact that we don't manually delete/free things any more (releasing integer assignments aside) is making me a bit apprehensive. So please consider this...
...and tell me do:
(1)Ignoring the 'Global unListed' line (which I'll ask you about in a minute), does this generally hang together as a reasonably solid way to handle object creation and destruction in Max?
(2)Thinking of garbage collection, in order to create and destroy instances there has to be a reference to that instance made in the associated method/function. Does this mean that the last instance created/destroyed will hang about in memory even when it has been removed from its list? Should I be worrying about this or does it all really just take care of itself as long as there is nothing to release?
(3)Looking specifically at that 'Global unListed' line -- does the garbage collector cope with the fact that the previous reference is redundant as the for/next loop iterates, or is this a really dumb thing to do? I'm just curious really because I noticed that going...
...makes the compiler squawk whereas B3D would just accept it (presumably trusting you to deallocate the first object before initialising the second).
EDIT:Took out my debug code.
SuperStrict Type myType Field x:Int Field y:Int Function create(initX:Int,initY:Int) Local newMyType:myType = New myType newMyType.x=initX newMyType.y=initY ListAddLast (myTypeList,newMyType) End Function Method destroy() ListRemove(myTypeList,Self) End Method EndType Global myTypeList:TList = CreateList() '========================================= For Local i:Int = 0 To 10 myType.create(10,20*i) Global unListed:myType=New myType Next
...and tell me do:
(1)Ignoring the 'Global unListed' line (which I'll ask you about in a minute), does this generally hang together as a reasonably solid way to handle object creation and destruction in Max?
(2)Thinking of garbage collection, in order to create and destroy instances there has to be a reference to that instance made in the associated method/function. Does this mean that the last instance created/destroyed will hang about in memory even when it has been removed from its list? Should I be worrying about this or does it all really just take care of itself as long as there is nothing to release?
(3)Looking specifically at that 'Global unListed' line -- does the garbage collector cope with the fact that the previous reference is redundant as the for/next loop iterates, or is this a really dumb thing to do? I'm just curious really because I noticed that going...
Global unListed:myType=New myType Global unListed:myType=New myType
...makes the compiler squawk whereas B3D would just accept it (presumably trusting you to deallocate the first object before initialising the second).
EDIT:Took out my debug code.