Objective-C iPhone应用程序与MonoTouch应用程序相比有多大?

Red*_*ter 21 iphone mono objective-c xamarin.ios

我正在考虑将MonoTouch用于iPhone开发,但有效载荷大小是一个重要因素.

对于之前从未在iPhone上安装过Mono的用户,将Objective-C"Hello World"应用程序的大小与MonoTouch"Hello World"应用程序进行比较?

更具体地说,约为什么.需要下载的字节数,大约是多少.一旦安装使用的字节数?

Zor*_*mic 17

Objective-C中的"Hello world"程序占用50 KB(整个.app文件夹).使用MonoTouch,一个类似的"Hello World"应用程序占用5 MB(整个.app文件夹),考虑到它有一个带有垃圾收集的运行时,这一点都不错.

  • 应用程序不是那么大,我不确定"5meg"来自哪里.除非您包含整个monotouch API集,否则大多数应用仅使用某个区域.我现在生产更多的应用程序并销售更多的应用程序并赚取更多的钱,因为我从XCode切换到Monotouch,最后,这是商业开发人员的最佳基准.快乐,付费的客户和很多客户. (9认同)
  • 5MB是巨大的!Mac OS X上的objc + GC占用不到1.25MB.我敢打赌,5MB的大部分都是Mono API和Cocoa Touch API之间的混合物. (6认同)
  • 不正确的佐兰.压缩的可执行文件大小不是appstore列出的大小.我们的一个应用程序在压缩和上传时不到10mb,但它现在在商店中显示为14.7.不幸的是,这让我们超过了3g下载的限制. (5认同)
  • 我认为Apple对于Mono Touch提供一些支持非常聪明,就像他们对Bootcamp一样:是的,人们现在可以在Mac上轻松安装Windows,但这就是我开始使用Mac的原因!我买了一个以为我可能放弃它,只是在它上安装Windows ...我想我不喜欢OS X,就像我喜欢硬件一样.6个月后,我完全放弃了Windows!支持Mono Touch可以为Apple带来类似的好处.我不打算使用Mono Touch,但这是一件非常棒的事情.他们应该将Mono运行时与每个iPhone捆绑在一起,从v4.0开始 (2认同)

Chr*_*s S 11

在1.5 Monotouch

发布版本 - 使用分发许可证构建的应用程序 - 除了默认项目设置外,只有5 MB.其中4.3 MB是二进制可执行文件.

根据我的经验,它们通常会增加到10 MB,论坛也会画出相同的图片.appstore报告解压缩的大小,但是它们是压缩下载的.拉链大约3 MB,即使在3G上也可以.

http://i40.tinypic.com/2jadrpd.png

在我看来,大多数人在下载应用程序之前不会查看文件大小,也不会特别小心.3G下载的appstore限制现在为20 MB,完全在MonoTouch大小范围内.

为了扮演魔鬼的拥护者,是的,它有许多比Objective-C更大的订单,可能会吓跑一些担心占用16 GB空间4-10 MB的人.但是,还有上市时间和现有的.NET工具.我在Visual Studio 2010中开发构建我的所有MonoTouch应用程序,然后在Mac上进行测试,我甚至不认为Apple会认为他们的IDE接近行业领导者.

  • 对于任何想要将Visual Studio 2010与MonoTouch一起使用的人.许多涉及黑客攻击cproj文件并且必须维护项目和解决方案文件的两个版本的解决方案已经被这个梦幻般的VS2010插件淘汰了:https://github.com/follesoe/VSMonoTouch (2认同)

小智 8

从这个关于MonoTouch和可执行文件大小的问题:

MonoTouch不会转换为Obj-c.它编译成.NET IL,然后编译它(以相同的方式将JIT编译器运行,但在它运行之前 - 因此"提前编译")到本机ARM代码中.

所以:

Obj-C - > GCC(或LLVM) - > ARM代码

vrs MT:

C# - > IL - >(AOT编译器) - > ARM代码

3.x中的输出二进制文件更大,因为你还包括很多.NET框架(好吧,Mono Framework,但是相同),所以如果你,例如,使用System.Xml,它必须包括进入输出 - 与System.dll等相同.链接器非常智能,但输出二进制文件总是会更大.

对我来说,唯一重要的是加载时间和压缩二进制大小.对于"hello world"应用程序的压缩二进制文件大约是2.5-3meg (在我告诉的4.x中较小)对于obj-c 来说约为300k.添加的越多,差异越小,因为它只包含一次system.dll之类的内容.MT vrs Obj-c的加载时间,同时执行相同的操作,也足够接近相同的时间.可以使任何一个加载缓慢(只需在FinishedLaunching中执行长时间运行而不将其放在另一个线程上).

回答者继续说他觉得MonoTouch比Objective-C更有效率.因人而异.