Zum Beispiel gibt es eine neue Klasse in iOS 7, die in iOS 6 nicht existiert. Ich möchte diese neue Klasse verwenden. Meine App muss mit iOS 6 kompatibel bleiben. Also habe ich an einigen Stellen gelesen, dass Sie dies jetzt tun können:
%Vor% Ist das in einer iOS 6 Version sicher oder sollten wir NSClassFromString
noch benutzen?
Dies ist der richtige und empfohlene Weg zu überprüfen, ob bestimmte Klassen verfügbar sind.
Ich habe das MVVM-Muster untersucht und es in einer Windows Phone 8-App umgesetzt. Ich habe eine Frage zu den Best Practices für die Initialisierung und den Zugriff auf ViewModels in einer App.
Wenn ich eine datengebundene Anwendung aus den WP8-SDKs-Vorlagen erstelle, ist mir dieser Code in der Datei App.xaml.cs aufgefallen:
%Vor%Soweit ich weiß, bedeutet dies, dass die App -Klasse das MainViewModel als statisches Member enthält. Wenn die Anwendung aktiviert ist, wird das ViewModel geladen.
In diesem Fall habe ich folgende Fragen:
Wenn meine App über mehrere ViewModels verfügt, werden sie alle als Mitglieder in der Datei App.xaml.cs gespeichert?
Wenn die Daten eines jeden ViewModels gleichzeitig geladen werden, wie verwalte ich den Speicher meiner App? Ist es möglich, alle ViewModel-Daten zu entladen und nur das ViewModel zu laden, das von meiner View verwendet wird?
Es gibt viele verschiedene Ansätze, ViewModels zu instanziieren. Einige von ihnen werden alle beim Start instanziieren, während andere das ViewModel nicht instanziieren, bis es benötigt wird.
Im folgenden Blog-Post finden Sie einige mögliche Ansätze, um ein ViewModel zu instanziieren:
Antworten auf Ihre Fragen; 1.- Nach Ihrem Ansatz müssten Sie Mitglieder für alle Ihre ViewModels in Ihrer App.xaml.cs -Datei definieren. 2.- Sie können einem Ansatz folgen, der das ViewModel nicht instanziiert, bis es benötigt wird.
Es gibt einige Toolkits, wie MVVM Light oder Caliburn Micro , die die Implementierung von MVVM-Pattern erleichtern. Ich persönlich benutze MVVM Light Toolkit , das den Locator-Ansatz verwendet. Wenn Sie dieses Toolkit verwenden, werden ViewModels standardmäßig geladen, aber Sie können festlegen, dass beim Start ein bestimmtes ViewModel geladen wird, was in einigen Szenarien nützlich sein kann.