Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: Android: Grenzen objektorientierter Programmierung?

  Alt 26. Jul 2014, 17:42
Auf Android greift ARC. Und da eine TList nicht typisiert ist und nur Pointer speichert, sorgt sie nicht dafür, dass deine TMyString Objekte am Leben bleiben. D.h. beim Verlassen der Methode bzw beim erneuten Zuweisen auf die MyString Variable, wo du die TList befüllst, sind sie schon wieder freigegeben worden. Demnäch stehen in der Liste bloß noch Pointer auf nicht mehr gültigen Speicher.

Um das zu lösen, würde ich für beide Plattformen vorschlagen, eine TList<TMyString> (oder auch direkt TList<string> oder TStringList) zu benutzen.
Hier auch drauf achten, dass du auf Windows keine Memoryleaks verursachst und deine TMyString Instanzen wieder richtig frei gibst, wenn die liste freigegeben wird (würde gehen, wenn du TObjectList<TMyString> benutzt)

Die findest du in der Unit System.Generics.Collections.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat