![]() |
AW: Webinar FreeAndNil
Beim Aufruf von Free bzw. FreeAndNil musst Du nicht vorher auf Assigned oder nil prüfen, das tun die Methoden bereits intern, im Gegensatz zu Destroy. Zu Deinem Problem: falls das JSONObject Teil eines anderen JSON-Objekts ist, kümmert sich dies bereits um die Freigabe, mit der Zuweisung holst Du Dir dann lediglich einen weitere Referenz, aber keine neue Instanz. Rufst Du also hier Free auf einer bereits vom "Eltern-JSON" freigegebenen Referenz auf, knallt es natürlich, da hilft auch kein FreeAndNil.
|
AW: Webinar FreeAndNil
Die ganze Diskussion zeigt doch nur eines: Die einzige Strafe, die die Verwendung von FreeAndNil mit sich bringt ist ein missbilligender Blick des Kollegiums. Es gibt keine Performance Strafe, es gibt keine Fehler. Es ist alles gut. Und damit kann ich wunderbar leben.
Sherlock |
AW: Webinar FreeAndNil
Zitat:
|
AW: Webinar FreeAndNil
FreeAndNil hat doch kein Try-Finally drin?
Drum macht es ja eigentlich NilAndFree, im sich das Try-Finally zu sparen. Einzig, wo es im FreeAndNil Probleme geben könnte, wenn im Destructor oder etwas darin Aufgerufenem oder anderem Freigegeben irgendwo auf diese (globale) Variable zugegriffen würde. z.B. im OnDestroy der Form auf die Form-Variable, anstatt auf Self. Hier ist die Variable ja schon vorher NIL und es würde dann knallen. Genau aus dem Grund setzt Application.FormCreate schon vor dem Constructor/OnCreate die Variable, falls jemand beim Laden auf diese Variable zugreift. und automatisch werden die FormVariablen nicht genilt, weswegen es dann beim Freigeben auch nicht mehr knallt. |
AW: Webinar FreeAndNil
Zitat:
Delphi-Quellcode:
Könnte ich da das Try..Finally irgendwie einsparen?
bla := nil;
blub := TSomeObject.Create; try bla := TSomeOther.Create; finally FreeAndNil(bla); FreeAndNIl(blub); end; |
AW: Webinar FreeAndNil
Achso, da ist es doch vom Tempo her egal, ob Free oder FreeAndNil.
Dachte du meinst das FreeAndNil selber, also
Delphi-Quellcode:
vs. das im FreeAndNil
try
blub.Free; finally blub := nil; end;
Delphi-Quellcode:
temp := blub;
blub := nil; temp.Free; |
AW: Webinar FreeAndNil
Wird es das Webinar auf YouTube geben? Habe es leider verpasst.
|
AW: Webinar FreeAndNil
Schau mal auf
![]() Da ist schon mal der Chat vom Webinar und der Satz: Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz