On Jul 22, 12:22 am, jay <jay.gin...@gmail.com> wrote:
> OK, I think this now gets into how the GWT compiler generates
> JavaScript from the Java sources... Say I have something like this:
>
> class Foo extends HorizontalPanel {
>   public Foo() {
>     final Button b1 = new Button( "OK" );
>     b1.addClickHandler( new ClickHandler() {
>       public void onClick(ClickEvent event) {
>         handleButton( b1 );
>       }
>     } );
>     add( b1 );
>
>     // Add some other buttons in a similar
>     //  pattern as above
>   }
>
>   private void handleButton( Button b ) {
>     // do stuff here
>   }
>
> }
>
> Now, in Java, the anonymous ClickHandler inner class will have a
> reference to the outer class. I assume that the generated JavaScript
> also must have a reference, otherwise there'd be no way for it to call
> the handleButton() method.
>
> In this case, the handler *does* have a reference to the widget.
>
> So...my question now is: Will this reference prevent the GC from
> taking care of the Foo, Button, and handler instances when Foo goes
> out of scope? Does it perhaps vary by browser? (Maybe....IE can't
> break such cycles, but FF can?)

Really, I don't know. I'd just rewrite the code to remove the
reference, just in case:
    b1.addClickHandler( new ClickHandler() {
      public void onClick(ClickEvent event) {
        handleButton( (Button) event.getSource() );
      }
    } );

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to google-web-tool...@googlegroups.com.
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.

Reply via email to