Muss ich SWT Shells explizit entsorgen?

8

Mir wurde gesagt, und lesen , dass SWT-Objekte müssen explizit durch Aufruf ihrer dispose -Methode entsorgt werden. In meinem eigenen Test mit dem folgenden Code habe ich jedoch festgestellt, dass sich mindestens Shell s selbst als erledigt melden, obwohl die dispose-Methode nirgendwo in meinem Code aufgerufen wird (noch erscheint).

%Vor%

Muss Shell wirklich explizit entsorgt werden? Wenn ja, woher wissen Sie, wann eine Shell zu entsorgen ist und wo die Entsorgungsmethode erscheinen soll?

    
Buttons840 12.01.2012, 21:22
quelle

1 Antwort

13

Das von Ihnen zitierte Papier macht dies deutlich:

  

Widgets selbst müssen normalerweise nicht entsorgt werden   programmatisch. Eine Shell und ihre Kinder werden beim Benutzer entsorgt   schließt sein Fenster.

Während also eine Shell entsorgt werden muss , liegt es nicht an Ihnen, dies zu tun. Sie müssen auch dispose für keines der Kinder aufrufen, da das Ablegen eines Elternteils das für Sie erledigt. Nochmals, aus dem Link ziehst du:

  

Wenn Sie eine Shell entsorgen, werden ihre untergeordneten Elemente entsorgt. Eigentlich,   Wenn Sie einen Composite entsorgen, entsorgen Sie alle Composite-Kinder.

Sie müssen jedoch sicherstellen, dass Sie von Ihnen erstellte Ressourcen entsorgen, die nicht untergeordnet sind. Zum Beispiel: Farben und Schriftarten. Sie müssen die Methode dispose explizit aufrufen. Am besten ist es, wenn du einen Empfänger zum Ablegen an den Composite angehängt hast, in dem du sie verwendest. Zum Beispiel:

%Vor%

Es ist jedoch wichtig zu beachten, dass Sie Color s, das Sie verwenden nicht verwenden, aber nicht erstellen . Beispielsweise können Sie die verfügbaren Systemfarben nicht von Display#getSystemColor() bereitstellen.

    
Edward Thomson 12.01.2012, 21:36
quelle

Tags und Links