Ich arbeite an einer Xamarin-Anwendung, die ich zunächst auf iOS arbeiten werde, aber später auf Android und andere mobile Plattformen erweitern möchte.Wo initialisiert man PCL in einer Xamarin.iOS App?
Als solche versuche ich, so viel gemeinsamen Code in PCLs wie möglich zu halten.
Meine Frage: Was ist die beste Vorgehensweise - in Xamarin.iOS für jetzt - um jeden abhängigen PCL-Code zu initialisieren?
Denn jetzt habe ich es in der RootViewController
innen ViewDidLoad()
public override void ViewDidLoad()
{
base.ViewDidLoad();
_engine = new MyEngine();
View = new MainView(_engine);
}
Ist dies die richtige Stelle? Ich hatte darüber nachgedacht, es in den ctor für die RootViewController
zu setzen, aber es gibt ein gutes Stückchen in dem Initialisierungscode, der damit gegen "nicht schweren Init-Code in einen Konstruktor" lief.
Dinge, die geschehen sind:
- laden App-Einstellungen
- Wenn App für das erste Mal ausgeführt wird, laden Grund defaults
- Initialise andere PCL-Bibliotheken, wie ein TextToSpeech Modul, ein Zustand, Motor (daher der Name der Klasse, oben), usw.
- einem Datenraster auf XML basiert vorbereiten oder JSON Eingangs
Al ternately, ich sollte es vielleicht in die AppDelegate
Sektion gehen, aber das klang nicht richtig.
Ich bin immer noch ziemlich neu in der mobilen App dev im Allgemeinen und Xamarin in bestimmten, obwohl ich C# nativen Code für Windows seit Jahren getan habe. Ich möchte nur sicherstellen, dass ich den Best Practices folge, aber in diesem Fall scheint es kein "Du sollst" zu geben.
Edit: Ich habe die Lösung basierend auf @ wishmaster Vorschläge extrahiert.
Ausgezeichnet. Ich kann sehen, dass ich mehr in die Grundlagen von Swift und Obj-C eintauchen muss. Von C# kommend, hatte ich naiv gehofft, ich könnte bei der kleinen Insel von Xamarin Dokumentation bleiben. Nicht so. Das Dokument, das Sie verlinkt haben, erklärt einige der Feinheiten der App-Einführung, genau das, wonach ich gesucht habe. – Marakai
In Xamarin ist die Methode didFinishLaunchingWithOptions() FinishedLaunching() - und die Dokumente sind bei weitem nicht so detailliert. – Marakai
Sie haben mich auf dem richtigen Weg und es funktioniert wie ein Charme! Ich bearbeite meine Frage und lege die Lösung in eine separate Antwort, aber Sie erhalten immer noch die Akzeptierte Antwort-Gutschrift! – Marakai