Destroy
(Available in 00 TS Tools(Base) - TS_Tools_Root1)
Purpose
CALLBACK: It is adviced to use 'oObject:Axit()'
Syntax
// See the documentation for the 'Axit' method.
oSomeClass:Axit( )
Description
This is where the application releases all refered to dynamicly allocated resources ( ARRAY, OBJECT, STRING ), and where all staticaly allocated memory is freed.
Note: Do not execute the 'Destroy()' method directly, it is adviced to call the 'Axit()' method when destruction of the object is needed this method of destruction is optimized for speed and guaranties that the 'Destroy()' method is only called once.
Note: The designer of the class should be aware of the fact that the 'Destroy()' method can be called multiple times.
Example
METHOD Destroy( ) CLASS SomeClass
// Let it be known that we are destroying the object
SELF:IsInDestroy:=TRUE
// Do the destructive work
...
// All work should be done before calling SUPER
SUPER:Destroy( )
RETURN NIL
Source
METHOD Destroy( ) CLASS TS_Root1
LOCAL oDestructor AS TS_Destructor
LOCAL aOwneds AS ARRAY
LOCAL oOwned AS OBJECT
LOCAL X AS DWORD
TSTrace Enter
SELF:_ObjectStat1:=_OR( SELF:_ObjectStat1 ; ...
... , TS_OBJSTAT1_INDESTROY )
IF SELF:_Owneds<>NULL_ARRAY
aOwneds:=SELF:_Owneds
SELF:_Owneds:=NULL_ARRAY
FOR X:=ALen( aOwneds ) DOWNTO 1
oOwned:=aOwneds[ X ]
aOwneds[ X ]:=NULL_OBJECT
IF