ما مدى حجم تطبيق Objective-C على iPhone مقابل تطبيق Objective-C؟تطبيق MonoTouch؟

StackOverflow https://stackoverflow.com/questions/1444777

سؤال

أنا أفكر في استخدام MonoTouch لبعض عمليات تطوير iPhone، ولكن حجم الحمولة هو عامل مهم.

بالنسبة للمستخدم الذي لم يسبق له تثبيت Mono على جهاز iPhone الخاص به من قبل، ما حجم تطبيق Objective-C "Hello World" الذي يمكن مقارنته بتطبيق MonoTouch "Hello World"؟

وبشكل أكثر تحديدا، ما هو تقريبا.عدد البايتات التي يجب تنزيلها، وما هو العدد التقريبي.عدد البايتات المستخدمة بمجرد التثبيت؟

هل كانت مفيدة؟

المحلول

وA "مرحبا العالم" البرنامج في الهدف C تحتل 50 KB (مجلد .app كله). مع MonoTouch، وهو مماثل التطبيق "مرحبا العالم" تحتل 5 MB (مجلد .app كله)، وهي ليست سيئة على الإطلاق بالنظر لديه وقت التشغيل مع جمع القمامة في ذلك.

نصائح أخرى

في 1.5 مونوتاتش

تبلغ مساحة إصدار الإصدار - وهو تطبيق تم إنشاؤه باستخدام ترخيص توزيع - وبدون أي شيء سوى إعدادات المشروع الافتراضية، 5 ميغابايت.ومن بين تلك الـ 4.3 ميغابايت، يكون الملف الثنائي قابلاً للتنفيذ.

وغالبًا ما يصل حجمها إلى 10 ميغابايت حسب تجربتي، وترسم المنتديات الصورة نفسها.يُبلغ متجر التطبيقات عن الحجم الذي تم فك ضغطه، ولكن تم تنزيله مضغوطًا.يبلغ حجم الملف المضغوط حوالي 3 ميغابايت، وهو أمر جيد حتى على شبكة 3G.

من وجهة نظري، لن ينظر معظم الأشخاص إلى حجم الملف قبل تنزيل التطبيق، ولا يهتمون بشكل خاص. يبلغ الحد الأقصى لتنزيلات متجر التطبيقات عبر شبكة الجيل الثالث الآن 20 ميغابايت وهو جيد ضمن حجم MonoTouch.

للعب دور محامي الشيطان، نعم، إنها أوامر أكبر بكثير من مكافئ Objective-C ويمكن أن تخيف بعض الأشخاص القلقين بشأن شغل ما بين 4 إلى 10 ميغابايت إضافية من مساحة 16 غيغابايت الخاصة بهم.ومع ذلك، هناك أيضًا وقت لتسويق الأدوات الموجودة لـ .NET.أطور و قم ببناء جميع تطبيقات MonoTouch الخاصة بي في Visual Studio 2010 ثم اختبرها على جهاز Mac، ولا أعتقد أن حتى شركة Apple ستجادل بأن بيئة التطوير المتكاملة (IDE) الخاصة بها قريبة من الشركة الرائدة في الصناعة.

من هذا السؤال فصاعدا MonoTouch وحجم الملفات التنفيذية:

لا يترجم MonoTouch إلى Obj-c.يتجمع إلى .NET IL ، ثم يجمع ذلك (بنفس الطريقة التي سيؤدي بها برنامج التحويل البرمجي JIT ، ولكن قبل تشغيله - ومن ثم "في وقت مبكر" مترجم) في رمز الذراع الأصلي.

لذا:

Obj-C -> مجلس التعاون الخليجي (أو LLVM) -> رمز ARM

فيرس إم تي:

C# -> IL -> (مترجم AOT) -> رمز ARM

ثنائيات الإخراج في 3.x أكبر لأنك تشمل أيضًا الكثير من .الإطار الصافي (حسنا ، إطار أحادي ، ولكن نفس الشيء) ، لذلك إذا أنت ، على سبيل المثال ، استخدم System.Xml ، يجب أن يتضمن ذلك في الإخراج - نفس الشيء مع النظام .dll إلخ.الرابط ذكي جدا ، لكن الإخراج الثنائيات ستكون دائما أكبر.

بالنسبة لي ، الشيء الوحيد المهم هو حجم وقت التحميل ، ومضغوط الحجم الثنائي. الملف الثنائي المضغوط لتطبيق "hello World" يبلغ حوالي 2.5-3 ميغا (أصغر في 4.x قيل لي) مقابل حول 300 ألف لـ obj-c.الفرق يحصل على أقل وأقل كلما أضفت أكثر ، لأنه يتضمن فقط أمثال النظام .dll مرة واحدة.وقت التحميل ل MT vrs Obj-c ، والقيام بنفس الأشياء في في نفس الوقت ، قريب بما فيه الكفاية لنفسه.يمكن إجراء أي منهما قم بالتحميل ببطء (فقط افعل شيئا طويل المدى في FinishedLaunch دون وضعه على خيط آخر).

يستمر المجيب في القول إنه يشعر أنه أكثر إنتاجية مع MonoTouch من Objective-C.YMMV.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top