realbasic-nug.fr
[Top] [All Lists]

Re: Référence d'objet et dictionnaires...

To: REALbasic NUG French <realbasic-nug dot fr at lists dot realsoftware dot com>
Subject: Re: Référence d'objet et dictionnaires...
From: olivier corouge <olivier at realsoftware dot fr>
Date: Tue, 31 Jul 2007 16:01:30 +0200
Delivered-to: listarchive at realsoftware dot com
Delivered-to: realbasic-nug dot fr at lists dot realsoftware dot com
References: <90001E2D-EDC7-45E3-8737-0CE31258AEB8 at mac dot com> <46AF1648 dot 1010902 at realsoftware dot fr> <5A602FBF-016C-48B5-8B0C-A62896E66329 at mac dot com> <46AF1C53 dot 4010808 at realsoftware dot fr> <B50FFFBC-E7F3-4B8C-8453-1832FAC84D13 at mac dot com>
Powel wrote:
Si je comprends bien, le fait de créer un nouveau dictionnaire avec le même nom supprime les références et les transforme en nouveaux objets ? Si c'est le cas, c'est très astucieux. Mais ne serait-il pas plus simple que RB permettent de ne transmettre que les valeurs sous la forme d'un clone non lié et non l'objet ?

oups j'ai pas dut etre clair.

pour faire simple le principe du garbage collector est de regarder si il existe des réfrences a une instance au cour de l'execution. Si il n'y a plus de référence, l'instance est détruite.

quand tu fais : site = new Dictionnary

cela crée une référence au niveau de la variable site.

quand tu fais par la suite : sites.value(n)=site

cela crée une 2ème réfrence a cette instance dans le dictionary.


A ce moment là il existe 2 références à l'instance de dictionary



Par la suite dans ta boucle while, je refais : site = new Dictionnary

cela détruit donc une des 2 référence a la première instance de dictionary, et crée une nouvelle instance dont une référence est dans la variable site.



pour résumer :

1) site = new Dictionnary => instanceA (1 référence)
2) sites.value(n)=site => instanceA (2 références)
3) site = new Dictionnary => instanceA (1 référence), instance B(1 référence)
4) sites.value(n)=site => instanceA (1 référence), instanceB (2 références)


Le garbage collector scrute le compteur de référnece de chaque instance et quand celle-ci est à 0, supprime l'instance.

J'espère avoir été un peu plus clair.


Ex : sites.value(n)=&site

où &site signifierait que l'on fonctionne en valeur et non en référence ?


Tu eux adresser une feature request à l'adrese suivante :
http://www.realsoftware.com/feedback

Cordialement,
Olivier Corouge

--
Olivier Corouge
Support Technique en Français
olivier at realsoftware dot fr - http://www.realsoftware.fr



<Prev in Thread] Current Thread [Next in Thread>