[Squeak-fr] Morph et triggerEvent

Serge Stinckwich serge.stinckwich at doesnotunderstand.org
Ven 16 Mai 07:21:09 UTC 2008


Le 15 mai 2008 22:59, Stéphane Rollandin <hepta at zogotounga.net> a écrit :
> j'ai trouvé:

Bingo ! Merci Stéphane.

> dans ton example1, l'object référencé par m est garbage-collecté parce qu'il
> n'est pas retourné par la méthode (le pourquoi de ce comportement ne m'est
> pas très clair); du coup, un WeakMessageSend pert son receiver, et la chaine
> de tes événements est interrompue.

Oui, je commence à comprendre, mais la sémantique ne me parait pas
très claire également ...
ce type de comportement me parait très fragile. Surtout que le
comportement n'est pas identique suivant la version de Squeak.

Même en retournant l'instance m à la fin de example2 dans une image
3.9, je n'ai pas le comportement souhaité : un affichage régulier
d'évènements.
Par contre, dés que je fais un inspect sur MyMorph example2, cela
marche ... donc c'est bien un problème de référence qui disparait.

> pour t'en convaincre, deux choses:
>
> 1) fait MyMorph example1, ouvre un explorateur sur le morph qui apparait "in
> Hand" et regarde son actionMap (dans extension, otherProperties). c'est un
> WeakMessageSend dont le receiver est nil. donx le message #eventOccured n'a
> nulle part où aller.

Oui, j'avais déjà remarqué cela.

> 2) va dans la méthode Object>>When:send:to: et remplace WeakMessageSend par
> MessageSend. ça marche.

En effet, cela marche sans problème dans Sq3.9 et 3.10.
Pourquoi la gestion des évènements est basée sur des WeakMessageSend
et pas des MessageSend ?
J'imagine pour éviter d'avoir des erreurs si j'essaie d'envoyer un
message mal formé ?

> conclusion: tu est tombé sur une configuration où la viabilité d'un de tes
> objects n'est pas suffisamment assurée (manque de référence), et donc il
> disparait prématurément, plus ou moins vite ce qui explique que tu puisse
> voir un message dans le Transcript, ou aucun.
>
>
> CQFD ?
>
> Stef
>
> _______________________________________________
> Squeak-fr mailing list
> Squeak-fr at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr
>



-- 
Serge Stinckwich
http://blog.doesnotunderstand.org/


Plus d'informations sur la liste de diffusion Squeak-fr