Forum: Cross-Platform-Entwicklung
iOS
by Sir Rufo,
22. Jan 2016
Was ist denn jetzt wirklich abweichend?
Mit Free wird der Destructor nur einmal durchlaufen. Da hat sich nichts geändert.
Was ist denn gefährlicher?
Ein Programm mit Speicherlecks
Ein Programm was auf einmal falsch arbeitet?
Ich bin da eher für die Speicherlecks.
Forum: Cross-Platform-Entwicklung
iOS
by Sir Rufo,
22. Jan 2016
TObject->TPersistent->TComponent->TFmxObject->TControl
Darum gelten für ein TControl die Regeln für TComponent und TFmxObject :stupid:
Weil unter ARC die Uhren anders ticken braucht man eine andere Strategie was den Destructor angeht.
Der Destructor wird unter ARC automatisch aufgerufen, wenn der RefCount auf 0 geht (keiner will mehr mit der Instanz spielen).
Würde jetzt mit Free unter...
Forum: Cross-Platform-Entwicklung
iOS
by Sir Rufo,
21. Jan 2016
Wird eine TComponent Instanz zerstört werden auch alle Components zerstört.
Wird eine TWinControl Instanz zerstört werden auch alle Children zerstört.
Wird eine TFmxObject Instanz zerstört werden auch alle Children zerstört.
TObject.DisposeOf zerstört ohne Wenn und Aber (ARC oder nicht).
Einfache und alte Regel ... nur das mit dem DisposeOf ist neu.
Forum: Cross-Platform-Entwicklung
iOS
by Sir Rufo,
21. Jan 2016
Man braucht keine Unterscheidung zu machen.
TObject.DisposeOf testet selber auf nil und ruft den Destructor auf (egal ob ARC oder nicht).
TObject.Free testet selber auf nil und ruft den Destructor auf (nur bei NICHT-ARC)
Will man also eine Komponente ins Jenseits befördern, nimmt man generell DisposeOf.
Genauso mit Streams und sonstigen Instanzen, die noch Ressourcen halten, die man...