Wie groß ist ein Objective-C iPhone App im Vergleich zu einem Monotouch App?
-
22-07-2019 - |
Frage
Ich erwäge mit Monotouch für einige iPhone-Entwicklung, aber Nutzlastgröße ist ein wichtiger Faktor.
Für einen Benutzer, der noch nie zuvor installiert Mono auf ihrem iPhone hat, was würde die Größe eines Objective-C „Hallo Welt“ App zu einem Monotouch „Hallo Welt“ app verglichen werden?
Genauer gesagt, was ist die ca.. Anzahl von Bytes, die heruntergeladen werden müssen, und was ist die ca.. Anzahl der Bytes einmal installiert verwendet?
Lösung
Ein "Hallo Welt" Programm in Objective-C belegt 50 KB (ganzer .app-Ordner). Mit Monotouch, ein ähnliches „Hallo Welt“ App belegt 5 MB (insgesamt .app Ordner), die bei nicht schlecht ist alles bedenkt, dass es eine Laufzeit mit Garbage Collection in ihm hat.
Andere Tipps
In 1,5 Monotouch
Ein Release-Build - das ist eine eine Anwendung mit einer Vertriebslizenz gebaut - und mit nichts als die Standardprojekteinstellungen, beträgt 5 MB. Von diesem 4.3 MB ist die binäre ausführbare Datei.
Sie erheben sich oft auf bis zu 10 MB in meiner Erfahrung und die Foren malen das gleiche Bild. Die Appstor berichten die entpackte Größe, aber sie gezippt heruntergeladen werden. die auch auf einem 3G-Reißverschluss es rund 3 MB ist, ist in Ordnung.
Meiner Meinung nach werden die meisten Menschen auf der Dateigröße sehen nicht vor dem Download einer App, noch besonders interessieren. Die Appstor Limit für 3G-Downloads sind jetzt 20 MB , die innerhalb der Monotouch Größe gut ist.
Um den Advocatus Diaboli zu spielen, ja, ist es viele Aufträge größer als die Objective-C-Äquivalent und konnte ein paar Leute Sorgen um besetzen 4-10 MB mehr ihrer 16 GB Platz abzuschrecken. Allerdings gibt es auch die Markteinführungszeit und die vorhandenen Tools für .NET. Ich entwickle und bauen alle meine apps Monotouch in Visual Studio 2010 dann sie auf dem Mac testen, und ich glaube nicht einmal, Apple würde argumentieren, ihre IDE zum Branchenführer der Nähe ist.
Aus dieser Frage auf Monotouch und Größe der Executables :
Monotouch übersetzt nicht auf Obj-c. Es kompiliert zu .NET IL, dann kompiliert, dass (in der gleichen Art und Weise ein JIT-Compiler würde, aber bevor es laufen -. also "vor der Zeit" Compiler) in native ARM-Code
so:
Obj-C -> GCC (oder LLVM) -> ARM-Code
vrs MT:
C # -> IL -> (AOT-Compiler) -> ARM-Code
Die Ausgangs Binärdateien in 3.x sind größer, weil Sie auch sind, einschließlich Viele der .NET Framework (na ja, Mono-Framework, aber gleich gleich), so dass, wenn Sie, zum Beispiel verwenden System.XML es, dass in der Ausgabe enthalten ist - gleiche mit System.dll usw. Der Linker ist ziemlich smart, aber der Ausgang Binärdateien sein werden immer größer .
Für mich ist die einzige Größe, was zählt, ist die Ladezeit und Reißverschluss binäre Größe. Zip binär für eine "Hallo Welt" App ist über 2.5-3meg ( kleiner in 4.x mir gesagt: ) vrs über 300k für obj-c. Der Unterschied wird immer weniger, je mehr Sie hinzufügen möchten, wie es enthält nur die Gleichen von System.dll einmal. Ladezeit für MT vrs Obj-c, die gleichen Dinge tun bei Gleichzeitig ist nahe genug, um das gleiche. Entweder man kann gemacht werden Last langsam (nur etwas langen Lauf in Ihrem FinishedLaunching tut ohne dass es auf einem anderen Thread zu setzen).
Der Antworter geht weiter zu sagen, dass er fühlt, dass er mit Monotouch als Objective-C produktiver ist. YMMV.