Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Releasing objects?
Message
Information générale
Forum:
Visual FoxPro
Catégorie:
Autre
Divers
Thread ID:
00053676
Message ID:
00054706
Vues:
44
>>>>>>>>What's the proper way to release an object? For example, if I :
>>>>>>>>x=Createobject('myobject') where myobject is a class based on the
>>>>>>>>cutom class (and thus, has no Release method built in)? x.Destroy()
>>>>>>>>doesn't work since destroy is an even. I hate using Release x.
>>>>>>>
>>>>>>>why? if you're going to create in code, it makes sense (and easy reading) to release in code.
>>>>>>
>>>>>>I am releasing in code. I would like to have a method in my class that
>>>>>>releases itself, however. So I could have the following easily readable code:
>>>>>>
>>>>>>o = Createobject('myobject')
>>>>>>o.Show()
>>>>>>o.This()
>>>>>>o.That()
>>>>>>o.TheOther()
>>>>>>o.Release()
>>>>>>
>>>>>>
>>>>>>Instead, I'm forced to change the last line to:
>>>>>>
>>>>>>"Release o", which I think is ugly.
>>>>>
>>>>>Why don't you put the "RELEASE o" in a user defined Release method?
>>>>>
>>>>>Vlad
>>>>
>>>>Tried. Doesn't work. I made a release method that did a "Release this", but it
>>>>did nothing.
>>>
>>>Something is wrong. It should work. What do you mean by "it did nothing"? Can you still use the object? Do you still have the variable that keeps the reference to the object?
>>>
>>>Vlad
>>
>>Here is what I did:
>>
>>otest = CreateObject('test')
>>? Type('otest') (returns O)
>>otest.Release() (in the release method for otest, which i created, I have one line, "release this")
>>? Type('otest') (_still_returns O)
>>
>>Thus, the "release this" in otest.Release() isn't releasing the object. Any ideas?
>>
>>oTest is based on a custom class.
>
>Michael,
>
>Don't check
>
>type("oTest")
>
>Check oTest itself in the Debugger.
>Put both oTest and type("oTest") in the watch window,
>and you will see that after calling oTest.Release()
>Value of oTest turns there from (Object) to .NULL.,
>but type("otest") will remain O
>So, the object really is released.
>
>Nick

Ah, what was I thinking? Of course otest will still be of the same data type, but is now .Null. I just have to check for IsNull() in my program.

Sometimes, I dismay even myself.

Michael G. Emmons
memmons@nc.rr.com
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform