AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi Weak Referenzen überlegungen...
Thema durchsuchen
Ansicht
Themen-Optionen

Weak Referenzen überlegungen...

Ein Thema von Mavarik · begonnen am 26. Dez 2014 · letzter Beitrag vom 27. Dez 2014
 
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.130 Beiträge
 
Delphi 10.3 Rio
 
#1

Weak Referenzen überlegungen...

  Alt 26. Dez 2014, 13:38
Hallo Zusammen...

Vor ARC haben wir uns keine sorgen gemacht, oder?
Es wurde eine Objekt erzeugt und wenn wir es nicht mehr gebraucht haben, wurde einfach ein Free aufgerufen.

Dann wurden wir plötzlich entmündigt und ein Free machte nix mehr...

Besonders Fatal bei Sourcecode wo wir uns darauf verlassen haben, dass ein Free auch Freeed...

Delphi-Quellcode:
 MyForm := TMyForm.Create;
 try
   MyForm.Showmodal;
 finally
   MyForm.Free;
 end;
Selbst so simpler Code schließt nicht mehr das Fester, weil komischerweise die Referent nach einem Create nicht 1 ist.
Spätestens das dieser Stelle muss also ein Disposeof her.

Also folgende Procedure geschrieben...

Delphi-Quellcode:
Procedure ArcFree(Var Obj);
{$IF not Defined(AUTOREFCOUNT)}
var
   Temp: TObject;
begin
   Temp := TObject(Obj);
   Pointer(Obj) := nil;
   Temp.Free;
end;
{$ELSE}
begin
   if Pointer(Obj) <> NIL then
     begin
       TFMXObject(Obj).Release;
       TFMXObject(Obj).DisposeOf;
     end;

   TObject(Obj) := nil;
end;
{$ENDIF}
ARC hat sicherlich seine Vorteile, aber eigentlich nur, in Hinblick auf die CrossPlattform Programmierung, wenn uns ARC
@EMBT - BITTE PER COMPILER-SCHALTER!!!
auch unter Windows zur Verfügung steht.

Jetzt habe ich eine [Weak] Referenz und speichere diese an 10000 Stellen in Listen usw.
Wenn dann dieses Object geFreeed wird, müssen alle Pointer aus der Liste auf NIL gesetzt werden.

Warum den nicht so arbeiten wir früher und immer ein ArcFree aufrufen?
Keine Weak-Liste die Speicher verbraucht, keine Performance Einbußen bei einem Free, Fester gehen wirklich zu und mein Code läuft auch ohne ARC-Überlegungen.

Ich rede hier nicht von neuem Code...!

Wenn man etwas neu programmiert, kann man sicherlich die Unterschiede - mal eben - berücksichtigen.

Grüsse und einen schönen 2. Weihnachtsfeiertag

wünscht Mavarik
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz