AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Forms & ARC "spielereien"

Ein Thema von Mavarik · begonnen am 1. Jul 2013 · letzter Beitrag vom 3. Jul 2013
Antwort Antwort
Elfriede

Registriert seit: 26. Aug 2003
8 Beiträge
 
#1

AW: Forms & ARC "spielereien"

  Alt 1. Jul 2013, 20:23
Wir sollte mal schauen, nach welchen Mustern das FMX-Framework sich verhält. Den kompletten Total-Ausfall, den Du da beschreibst, konnte ich so nicht nachvollziehen. Anbei der Lebens-Zyklus eines Child-Forms, das ich über eine Schaltfläche auf dem Haupt-Form aufgerufen habe:

Screen Shot 2013-07-01 at 21.20.34.png

Zumindest im Simulator - diese Einschränkung muss ich noch machen. Vielleicht kann ich meinem Mitbewohner nachher wieder sein iPhone klauen, dann kann ich es auch dort versuchen.


Elli
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.261 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

AW: Forms & ARC "spielereien"

  Alt 1. Jul 2013, 20:42
Hallo,

wenn Du dir mal den Projektquelltext anschaust, dann machen die die Forms so:


Application.CreateForm(TFormxyz, Formxyz);

Dann wird die Form wahrschein lich beim Destory des Applicationsobject kommen ....

Wenn Du natürlich 100 Forms hast, dann wird dies wahrscheinlich nicht gehen ....

Ich hatte mich mit dem Arc auch einwenig beschäftigt und gesehen, das der RefCount bei manchen Sachen nicht mit 1 erstellt wird sondern mit einer großen Zahl.

Also mal testen formxyz.Refcount ausgeben lassen!
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: Forms & ARC "spielereien"

  Alt 2. Jul 2013, 08:08
Hallo,

wenn Du dir mal den Projektquelltext anschaust, dann machen die die Forms so:


Application.CreateForm(TFormxyz, Formxyz);

Dann wird die Form wahrschein lich beim Destory des Applicationsobject kommen ....
Das stimmt nur für Forms, die man im Projekt als auto-create angegeben hat - Frank erzeugt das Form selber.

Generell wird ARC wohl ein kleines Problemchen mit so fire and forget Aktionen haben. Im ersten Beispiel müsste es schon knallen (bzw das Form sofort wieder geschlossen und freigegeben werden), wenn die lokale Variable die einzige Referenz wäre. Das Form wird angezeigt und danach die Routine verlassen (Show ist nicht blockierend). Das heißt also, irgendwo wird es eine Referenz auf das Form geben. Ich bin der Meinung, Beispiel 3 sollte das sein, was funktionieren sollte - die AV in der FMX.Platform.iOS sollte abgefangen werden (bzw nil safe implementiert werden).
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie ( 2. Jul 2013 um 08:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: Forms & ARC "spielereien"

  Alt 2. Jul 2013, 10:29
Das Problem fängt ja damit an, dass nach einem

F := TForm.Create(NIL)

F.Refcount = 2 ist.

Achso...

Und beim "Klassiker"

F := TForm.Create(Application)

F.Refcount = 4 ist.


Mavarik

Geändert von Mavarik ( 2. Jul 2013 um 11:34 Uhr)
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#5

AW: Forms & ARC "spielereien"

  Alt 2. Jul 2013, 11:49
Ich hätte eigentlich erwartet, dass "Show" den RefCount um einen erhöht, da es ja non-blocking ist.
Wenn man es mit Show gezeigt hat, sollte das Schließen den Zähler um 1 verringern.

Zumindest hätte ich das so angenommen. Wie soll das ja auch sonst funktionieren?
Wenn man es modal zeigt, dann sollte da nix passieren.

Wie es tatsächlich passiert? kA
Aber es ist irgendwo nicht schlecht, dass sich EMBT Gedanken macht, um ein bissel Garbage Collection zu erlauben. Denn mit dem alten Modell gab es ja die abstrusesten Konventionen um bloss keine Leaks zu erzeugen.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: Forms & ARC "spielereien"

  Alt 2. Jul 2013, 12:58
Ich hätte eigentlich erwartet, dass "Show" den RefCount um einen erhöht, da es ja non-blocking ist.
Wenn man es mit Show gezeigt hat, sollte das Schließen den Zähler um 1 verringern.
Das Problem ist, wie soll man sauber alles free(n), wenn irgendwo versteckte Referenzen sind.

Show ändert (natürlich) nicht den RefCounter...

Das blöde ist, wenn man die Referenzen killt um alles sauber zu machen, greift Firemonkey immer noch an irgend einer Stelle auf das Formular zu
um noch eine Animation ab zu schließen oder was auch immer...

Und dann knallt es..

Mavarik
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Forms & ARC "spielereien"

  Alt 2. Jul 2013, 13:08
Dann trenne Deine Business-Logik vom FMX-Framework. An einem Punkt X, an dem Deine App der Ansicht ist, das Formular könne weg, räumt sie alles, was sie selbst erzeugt hat, auch wieder ab und gibt den Rest an FMX zurück. Mehr kann man letztlich eh nicht tun und was dann übrig bleibt, kann nicht mehr gravierend viel Speicher kosten.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz