3

Apple 与 Novell 谈判并将 Mono Touch 运行时(当然只是运行时)捆绑到每部 iPhone 和 iPod Touch 中,这让我觉得这是一个好主意。甚至可以将其设置为“一次性安装”,当一个人第一次下载使用 Mono Touch 构建的应用程序时,它会自动从 App Store 下载,从而使每个后续的 Mono Touch 应用程序下载起来更轻松(无需运行时)。

这样做在某种程度上类似于将 Bootcamp 添加到 OS X:它会使 C# 开发人员更容易加入聚会,但这并不意味着这些开发人员都会坚持使用 C#... 是什么说服我购买了Mac 是 Bootcamp - 我想如果我不喜欢 OS X,我总是可以安装 Windows(而且我喜欢硬件,所以那里没问题)。6 个月后,我全职使用 OS X...

这样做会不会有任何技术问题?我只看到各方的优势,而不是任何人的劣势(可能除了少数不幸的 Apple 员工,他们必须在捆绑之前测试 Mono Touch 运行时的垃圾):

  • Novell 获胜是因为 Mono Touch 变得更加可行(Mono Touch 应用程序突然变得更轻了)
  • 开发人员获胜,因为现在工具带中多了一个工具
  • 许多 C# 开发人员会对此非常感兴趣
  • 苹果获胜,因为这将带来更多的关注,更多的开发者费用收入,更多潜在的优秀应用程序等
  • 用户获胜是因为不同应用程序使用的空间更少,它们的设备上累积了相同运行时的副本

将 Mono Touch 绑定到 iPhone OS 会不会有重大的技术障碍?

编辑:将标题从“应该”更改为“Apple 会捆绑运行时吗?”,我认为预测这对那些考虑使用 Mono Touch 的人来说意义重大。

4

6 回答 6

18

不,但苹果也没有令人信服的理由这样做。iPhone 并没有对应用程序造成伤害,开发过程中存在比缺少 Mono 更大的问题(例如,过度工作的应用程序审阅者给出了奇怪的拒绝),还有其他替代语言,Apple 更有可能首先关心,例如 MacRuby 和 Python。Apple 支持这两种在 Mac 上编写 Cocoa 应用程序的语言,所以我希望它们在 iPhone 上得到支持,然后是像 C# 这样的外场语言。

(请注意,我并没有完全回答苹果是否应该捆绑 MonoTouch 的问题,这有点主观。我只是在解释影响苹果是否这样做的力量。)

于 2009-09-20T06:31:01.367 回答
4
  1. 我对 iphone 上的单声道运行时的理解(这可能是不正确的)是,它确实不是像在其他平台上那样的运行时 - 所有代码(包括单声道)都被编译为静态代码。
  2. 这是一个 1.0 版本,还没有证明它的价值。可能会有很多版本,并且预先下载所有版本会很麻烦。
  3. 它将开发人员的成本从 99 美元增加到至少 498 美元,因此可能会受到限制。
  4. 他们已经提供了一个非常好的开发环境和一组可用的库。
  5. Java 和 Flash 不可用 - 为什么他们会专注于远不成熟的东西。

我希望它做得好,但要让不到 1% 的应用程序的下载量稍微小一点,这确实不值得 Apple 考虑。

于 2009-09-20T06:54:43.437 回答
4

不这样做是有充分理由的,因为它会使开发人员支离破碎。有些人会学习 Objective-C,有些人会学习 Mono,如果 Apple 支持 Mono,他们就必须同时支持两者。

如果 Apple 打算做任何事情,他们会为 iPhone Objective-C 添加垃圾收集支持,它已经存在于桌面上 - 但他们认为设备性能限制足够严格,不会产生这种开销。

我非常相信使用在哲学上与您所在平台相匹配的框架。Mono 工作起来很酷,作为 Unity 之类的游戏脚本语言,我认为这是一个绝妙的想法 - 但如果您正在开发 iPhone 应用程序,您应该学习 Objective-C 以了解该平台的真实情况。

于 2009-09-20T20:19:22.567 回答
4

根据即将推出的 iPhone OS 4 SDK 的 iPhone 开发者计划许可协议,MonoTouch 实际上会违反并且是不允许的:

3.3.1 — 应用程序只能以 Apple 规定的方式使用文档化 API,不得使用或调用任何私有 API。 应用程序必须最初是用 iPhone OS WebKit 引擎执行的 Objective-C、C、C++ 或 JavaScript 编写的,并且只有用 C、C++ 和 Objective-C 编写的代码才能编译并直接链接到文档化 API(例如,禁止通过中间翻译或兼容层或工具链接到文档化 API 的应用程序)。

由于 C# 不是其中一种语言,因此不允许使用。

于 2010-04-08T21:42:45.083 回答
2

将框架与操作系统捆绑在一起具有重大意义。这样做会将保持 Mono Touch 安全和最新的责任完全落在 Apple 的肩上。即,任何与 Mono Touch 相关的问题在 Apple 上的表现都比在 Novell 上的表现要差得多,并且任何框架更新都需要进行大量测试以确保现有的 Mono Touch 应用程序不会崩溃。我确信这是苹果不想要或不需要的责任。

更重要的是,苹果在吸引开发者使用 iPhone 平台方面似乎没有任何问题。它还有助于将开发人员带到 OS X 平台,这是一个巨大的平台。我无法想象苹果现在想要改变一件事。

于 2009-10-17T02:47:10.213 回答
0

除了 Chuck 所说的之外,Apple 必须验证 MonoTouch 中的所有功能是否正常工作,并且不会导致崩溃,从而让 Apple 看起来很糟糕。这意味着 Apple 不仅要对现在的 MonoTouch 进​​行严格的测试和 QA,而且还要对后续发布的每个 MonoTouch 进​​行严格的测试和 QA。

即使添加 MonoTouch 支持是微不足道的,但做对了也不是微不足道

BootCamp 可能也是为 Apple 开发和 QA 的一项巨大工程努力,但将 Windows 用户(一个巨大的市场)吸引到 Mac 上是值得的。

于 2009-09-20T06:53:34.093 回答