Du hast kein Problem mit ARC sondern mit dem Lesen der Doku
FMX.Forms.TApplication.CreateForm
http://docwiki.embarcadero.com/Libraries/de/FMX.Forms.TApplication.CreateForm
Erstellt zur Laufzeit ein neues FireMonkey-Formular.
Rufen Sie
CreateForm
auf, um ein FireMonkey-Formular dynamisch zur Laufzeit zu erstellen. Bei den meisten Formularen braucht kein eigener Quelltext geschrieben zu werden, da bei Verwendung des Formular-Designers üblicherweise ein oder mehrere Aufrufe von
CreateForm
automatisch in die Quelltextdatei des Projekts eingefügt werden.
Zitat von
Tipp:
CreateForm
erstellt das angegebene Formular nicht sofort. Mit der Methode wird lediglich der ausstehenden Liste eine Anforderung hinzugefügt.
RealCreateForms erstellt die tatsächlichen Formulare.
Auf deinen Code angewendet sollte das hier die Lösung sein (klein aber fein)
Delphi-Quellcode:
program AppTwo;
uses
System.StartUpCopy,
FMX.MobilePreview,
FMX.Forms,
Viewer in 'Viewer.pas' {View},
MBPresenter in 'MBPresenter.pas',
MBModel in 'MBModel.pas',
MBInterface in 'MBInterface.pas';
{$R *.res}
Procedure Main;
Var Model : IMyInterfaceModel;
View : TView;
Presenter : TPresenter;
Begin
Application.CreateForm(TView, View);
Application.RealCreateForms; // <-- da isser der pöse Pursche
Model := TModel.Create;
Presenter := TPresenter.Create(View, Model);
try
Application.Run;
finally
Presenter.Free;
// ist eigentlich nicht notwendig, das Model-Interface wird am Ende diese Prozedur
// automatisch freigegeben
// Model._Release;
// alternativ wäre noch ein
// Model := nil;
// denkbar
end;
End;
begin
Application.Initialize;
Main;
end.
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)