Welche "Variable im Form"?
idR heisst ja nicht, dass es korrekt ist. Korrekt ist auf jeden Fall, dass Variablen (vor allem die für Instanz-Referenzen) die nicht lokal sind niemals auf einem ungültigen Wert stehen zu lassen. Selbst unter Nicht-ARC ist das schon immer der direkte Weg zu "Torte-Im-Auge" gewesen.
Ein FSomeThing.Free
knallt und ist auch mit if Assigned( FSomeThing ) then
nicht zu bändigen, wenn sich dort noch eine ungültige Referenz befindet. Lösen kann man das nur mit dem Setzen der Variablen auf nil
und dafür wurde ja extra FreeAndNil
eingeführt. Und das ist dann auch ARC-Safe.
OK - auch wenn das nicht die Frage war:
Eine lokale Variable geht i.d.R. gar nicht... Weil auf dem mobilen Gerät gibt es kein showmodal.
Aber es gibt einen Button oder ein ListElement oder was auch immer...
Darin steht:
MyForm := TMyForm.Create(Application);
Und MyForm ist aus der UMyForm.pas (Die Variable die automatisch definiert wird, wenn du ein neues Form an legst.
MyForm hat auch einen Button
In diesem Buttonclick steht.
Delphi-Quellcode:
MyForm2 := TMyForm2.Create(Application);
MyForm2.KillOldForm(Self);
Wenn Du jetzt in der KillOldForm ein FreeAndNIL aufrufst passiert überhaupt nix...
Da refcount 4 oder großer ist.
Mavarik