sclarecimentos sobre referências fracas nos ouvintes do ActionScri

Entendo como as referências fracas funcionam, mas estou um pouco confuso em relação ao seu uso nos ouvintes de eventos do actionscript. Considere o exemplo abaixo:

public class Rectangle extends MovieClip {
  public function Rectangle() {
    var screen:Shape=new Shape();
    screen.addEventListener(MouseEvent.MOUSE_OUT, new Foo().listen, false, 0, true);
    addChild(screen);
  }
}

public class Foo extends MovieClip {
  public function listen(e:MouseEvent):void {
    trace("tracing");        
  }        
}

Agora, como há apenas uma referência fraca ao Foo, o ouvinte do evento Foo não será coletado como lixo se e quando o coletor de lixo for executado e o código parar de funcionar conforme o esperad

O cenário de ouvinte de evento fraco é prescrito apenas para métodos de ouvinte de evento dentro da mesma classe que abaix

public class Rectangle extends MovieClip {
  public function Rectangle() {
    var screen:Shape=new Shape();
    screen..addEventListener(MouseEvent.MOUSE_OUT, listen, false, 0, true);
    addChild(screen);
  }

   public function listen(e:MouseEvent):void {
    trace("tracing");        
   }
 }

No cenário acima, é assim que os ouvintes de eventos fracos ajudam?

Se o objeto Rectangle não tiver outras referências, ele será candidato à coleta de lixo, mas como existe um ouvinte de eventos no objeto, o expedidor de eventos mantém uma referência ao objeto, mesmo que não haja outras referências ao objeto. (diferente daquele mantido pelo ouvinte de evento). Portanto, é impedido de ser coletado de lixo. É por esse motivo que os ouvintes de eventos fracos são prescritos? O flash player é tão ingênuo que não consegue descobrir que o ouvinte de evento está definido no mesmo objeto?

questionAnswers(1)

yourAnswerToTheQuestion