Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#11

AW: Eleganter Ersatz für TList und Objekte unter FMX-Platformen?

  Alt 30. Dez 2015, 23:10
TObjectList<T> hat eine Property OwnsObjects - steht diese auf true, kümmerst sich die Objektliste um die Freigabe der zugehörigen Objekte - steht sie auf false, musst du dich selbst drum kümmern. Verwendest du diese Objekte also an anderer Stelle wieder, sollte OwnsObjects auf false stehen, sonst werdne beim Clear alle Items ge"free"t.
Die werden eben nicht ge"free"t sondern ge"DisposeOf"t und das ist gerade unter ARC wichtig zu wissen.

Kleines Beispiel:
Delphi-Quellcode:
var
  a,b : TFoo;

a := TFoo.Create();
b := a;
a.Free();
Ohne ARC haben wir in b jetzt einen dangeling pointer (zeigt auf eine nicht mehr vorhandene Instanz).
Mit ARC haben wir in b eine Referenz auf eine lebende Instanz.
Delphi-Quellcode:
var
  a,b : TFoo;

a := TFoo.Create();
b := a;
a.DisposeOf();
Ohne ARC haben wir in b jetzt einen dangeling pointer (zeigt auf eine nicht mehr vorhandene Instanz).
Mit ARC haben wir in b eine Referenz auf eine (halbwegs) lebende Instanz, die allerdings den Status Delphi-Referenz durchsuchenTObject.Disposed hat (und somit ein vergleichbarer Status wie ohne ARC).
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (30. Dez 2015 um 23:15 Uhr)
  Mit Zitat antworten Zitat