首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么苹果允许.NET在iPhone上运行,而不允许闪存?

为什么苹果允许.NET在iPhone上运行,而不允许闪存?
EN

Stack Overflow用户
提问于 2010-01-30 23:28:43
回答 5查看 1.3K关注 0票数 3

据我所知,苹果已经禁止了iPhone上的Flash运行时,因为苹果不想要一个替代苹果通过自己的工具提供的运行时环境。根据Apple的说法,允许Flash运行时将允许开发人员绕过应用程序更新策略和苹果已经设置的其他控制。此时,Adobe还没有选择构建工具来静态编译Flash中创建的应用程序。

我的进一步理解是,通过MonoTouch创建的MonoTouch应用程序是静态预编译的,与运行在.NET公共语言运行库(CLR)中的iPhone相比,iPhone是作为本机代码而命中的,这肯定是苹果不允许的。由于.NET代码不是在微软运行时执行的,而是在iPhone CPU上执行的,所以苹果并没有抱怨。

我的问题是:

  1. 关于苹果为什么允许在iPhone上使用.NET开发的应用程序,我说对了吗?
  2. 一个供应商在iPhone (或我认为的任何平台)上预编译的本机代码是否与其他平台不同?换句话说,MonoTouch生成的本机代码是否与编译的目标C代码生成的本机代码无法区分?本机代码的来源是否完全不透明?
EN

回答 5

Stack Overflow用户

发布于 2010-01-30 23:43:57

MonoTouch所做的就是将Mono代码音译为objective,并将其编译为本机代码,因此一旦编译完毕,就可以“运行”,尽管使用了Mono。它实际上是mono代码的包装器,它被翻译成与目标C本机代码和运行时库相当的代码。

它们本身并不是真正的.NET运行时代码。所以根本就没有真正的区别!一旦编译成本机代码,就这样了。

票数 4
EN

Stack Overflow用户

发布于 2010-01-30 23:39:03

苹果并不关心VM在iPhone上的运行。它关心允许在iPhone上运行外部的、非应用程序的代码。

这就是为什么苹果不关心Adobe的"Flash“,它生产独立的Flash应用程序。这就是为什么苹果不关心编译后的.NET项目。

回想一下C64模拟器的问题。苹果只关心它捆绑了内部基础,然而仿真器是VM的一个完美例子。该VM正在执行的所有C64代码都是6502机器代码。但是模拟器缺乏从网络下载任意代码并执行它的能力。

这正是苹果所关心的。

票数 1
EN

Stack Overflow用户

发布于 2010-01-31 04:38:16

1-你说的差不多对。我不会说苹果“允许”MonoTouch应用在平台上,他们只是没有公开发表任何意见,而且在应用商店里已经有一些MonoTouch应用程序了。并不意味着他们明天就不会阻止他们了。

2-我对Mono Touch的内部特性不太了解,但我可以想象,MT应用程序一定有一些共同的特性(就像它膨胀二进制大小的方式,在某些地方肯定有一些共性),苹果可以用来挑选它们。当然,这可能需要付出难以置信的巨大努力才能获得很少的好处,而且他们可能更愿意花时间把时间花在3.2以上。

我想你对用来开发本地应用程序的工具和苹果想在Safari中支持什么样的浏览器插件之间的区别感到有点困惑。完全不同的概念。我认为您应该阅读约翰·格鲁伯最近的作品,以获得一个非常全面的理论,了解为什么Flash可能永远不会出现在iPhone或iPad上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2169923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档