4 Stimmen

Gibt es Dokumentation für ServiceStack.Text.JSConfig in Bezug auf MonoTouch AOT-Helfer?

Gibt es eine Dokumentation für ServiceStack.Text.JSConfig in Bezug auf MonoTouch AOT-Helfer?

Ich habe das hier gefunden... ServiceStack JIT Error on MonoTouch und ich habe mir den Code angesehen, aber es gibt keine Kommentare und ehrlich gesagt ist es ein bisschen mysteriös.

Nach meinem Verständnis des AOT-Prozesses muss man nur sicherstellen, dass ein Typ/ eine Methode ausgegeben wird, wenn dieser Typ/diese Methode in der Quelle vorhanden ist, wo der Compiler denkt, dass er/sie möglicherweise verwendet/aufgerufen wird. Es ist nicht notwendig, tatsächlich etwas zur Laufzeit zu verwenden/aufzurufen. Der ganze Sinn von AOT ist, dass es ein Kompilierungsprozess ist. Daher funktioniert es, wenn man den Aufruf innerhalb einer Methode platziert, die nicht verwendet wird, solange der Optimierer ihn nicht entfernt.

Ich habe versucht, ServiceStack.Text.JsConfig.RegisterTypeForAot(); (in einer ungenutzten Methode) zu verwenden, um meine AOT-Probleme zu beheben, bin jedoch auf andere seltsame Probleme gestoßen, wenn ich zu viele Aufrufe davon habe. Siehe andere Frage...

Aufruf von ServiceStack.Text.JsConfig.RegisterTypeForAot(); mit MonoTouch verursacht SIGSEGV beim Start auf dem Gerät

Vielleicht verwende ich die RegisterTypeForAot()-Methode falsch? Was machen die anderen Methoden? RegisterForAot() und InitAot()

1voto

mythz Punkte 138304

Es gibt keine Dokumentation zu JsConfig.InitForAot() außer dem, was bereits inline in JsConfig ist, d.h:

Geben Sie einen Hinweis an den MonoTouch AOT-Compiler, generische Klassen für alle Ihre DTOs vorzukompilieren. Muss nur einmal in einem statischen Konstruktor aufgerufen werden.

Sie sollten nur den JsConfig.InitForAot() Stub aufrufen und ein JsConfig.RegisterTypeForAot() für jeden Typ, um dem MonoTouch-Compiler mitzuteilen, welcher generische Code im Voraus generiert werden muss, damit der gesamte Code für generische Reflexion verfügbar ist. Wenn Sie auf ein Problem stoßen, reichen Sie bitte einen kleinen eigenständigen Testfall mit dem Problem im GitHub-Projektissues ein, damit wir sehen können, ob ein Workaround möglich ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X