MonoTouch 是用于 iPhone 开发的可行平台吗? [英] Is MonoTouch a viable platform for iPhone development?

查看:22
本文介绍了MonoTouch 是用于 iPhone 开发的可行平台吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

MonoTouch 似乎是 iPhone 开发的绝佳平台,但我担心将其部署到 Apple Store.是否有任何使用它构建的应用程序示例目前在 iTunes 上可用?

MonoTouch seems like a great platform for iPhone development, but I'm concerned about deploying it to the Apple Store. Are there any examples of applications built with it that are currently available on iTunes?

我们正在为 iPhone 启动一个新项目,并且将整个堆栈保持在 C# 中会很棒,但我们不希望因为 MonoTouch 而被 Apple Store 拒绝.

We're starting a new project for the iPhone, and keeping the entire stack in C# would be great, but we don't want to incur the risk of being turned down from the Apple store because of MonoTouch.

我已经阅读了一些当前使用单声道(不是 MonoTouch)进行 3D 图形的游戏,但找不到关于 MonoTouch 的任何信息.

I've read about several games that currently use mono (not MonoTouch) for 3D graphics, but couldn't find anything about MonoTouch.

推荐答案

在我的手机上打开这个,所以会有点简洁 - 对此表示歉意.

Tapping this out on my phone, so going to be a little terse - apologies for that. 

无论如何:

- 正如之前的回答所述,App Store 上已经发布了 MonoTouch 应用程序.无论是两个还是一个 bajillion 都没有那么重要.1 和 0 之间的差异是无限的 - 答案是明确的:是的,Apple 会批准 MonoTouch 应用程序.

 - As said in a previous answer, there have been MonoTouch apps released to the App Store. Whether it's two or a bajillion doesn't matter so much. The difference between one and zero is infinite - the answer is unequivocally: Yes, Apple will approve MonoTouch apps.

- MonoTouch 遵循 Apple 的规则.它吐出本机位.没有对代码的解释,也没有任何 JITting.您的 MonoTouch 应用程序与任何其他应用程序一样是一个捆绑包,它包含与其他任何应用程序一样的本机二进制文件.

 - MonoTouch plays by Apple's rules. It spits out native bits. There's no interpretation of code going on, nor is there any JITting. Your MonoTouch app is a bundle like any other, and it contains a native binary like any other.

- MonoTouch 应用比使用 Apple 堆栈编写的应用要大.这是因为您的 MonoTouch 应用程序依赖于 Mono/.Net 框架的一个子集.不过,在这方面,一旦您了解交付的内容,MonoTouch 应用程序就没有什么特别不同的了.我在一家公司工作,在那里我们根据我们的自定义框架构建了我们的应用程序(使用 Apple 的堆栈开发).它增加了我们的应用程序的大小,但它也减少了生产时间(这总是权衡,对吧?).另外,刚编译后的应用程序包的大小可能具有欺骗性.因为捆绑包是为 App Store 压缩的,所以大小会显着减小 - 您可以轻松编写一个 MonoTouch 应用程序,该应用程序很好在 OTA 交付的应用程序可接受的大小限制内(我提出这个问题是因为这是一个问题 MTn0obs(正确地)倾向于问).因此,Apple 没有任何真正的理由根据尺寸拒绝.

 - MonoTouch apps are larger than they would be if they were written with Apple's stack. This is because your MonoTouch app relies on a subset of the Mono/.Net framework. In that respect, though, once you get down to what ships, there's nothing especially different about a MonoTouch app. I worked at a company where we built our apps (developed with Apple's stack) against our custom framework. It increased the size of our apps, but it also cut way down on production time (and that's always the trade-off, right?). Plus, the size of the app bundle just after compilation can be deceptive. Because bundles are zipped for the App Store, the size decreases dramatically - you can easily write a MonoTouch app that falls well within the acceptable size limit for apps delivered OTA (I bring this up because it's a question MT n0obs (rightly) tend to ask). So, Apple doesn't have any real reason to reject based on size.

- 无论是 MonoTouch 还是像我曾经使用过的自定义内部框架,MonoTouch 的东西,当与您的应用一起提供时,只是另一个可以用 Objective 编写的框架-C.

 - Whether it's MonoTouch or a custom in-house framework like the one I used to work on/with, the MonoTouch stuff, when shipped with your app, is just another framework that could've been written in Objective-C.

- 如果您担心使用整个 MonoTouch 堆栈配置您的应用以进行分发以及这可能会如何影响您的批准机会,您可以告诉 MonoDevelop(或命令行中的 mtouch 实用程序)输出一个 Xcode 项目.您将看到您的代码已被转换 - 您将查看本机程序集(而不是某种类型的 IL).您可以直接在 Xcode 中构建和运行 MonoTouch 生成的应用程序,到那时 MonoTouch 基本上已经不在了(除了作为您正在构建的框架(例如 MapKit)).

 - If you're concerned about configuring your app for distribution using the entire MonoTouch stack and how that might affect your chances of approval, you can tell MonoDevelop (or the mtouch utility from the command-line) to output an Xcode project. You'll see that your code has been transformed - you'll be looking at native assembly (not some flavor of an IL). You can build and run your MonoTouch produced app from right within Xcode, by which time MonoTouch is basically out of the picture (except as a framework you're building against (like MapKit, for example)).

出于某种原因,所有这一切都困扰着一小部分 iPhone 开发者,他们无论出于何种原因,都无法忍受他们不认识的人使用不同的工具来构建应用程序的想法.但他们的仇恨并没有改变 Apple 已经接受 MonoTouch 应用程序(以及在此之前很久的 Unity 应用程序)的简单事实.

For some reason, all of this bothers a very small, but vocal, subset of iPhone devs who, for whatever reason, can't stand the idea of people they don't know using a different tool to build apps. But their hateage doesn't change the simple fact that Apple has accepted MonoTouch apps (and Unity apps long before that).

根据我的经验,您将看到 MT 应用程序被拒绝的最大原因是 MT 开发人员(我已经与很多人进行了交谈 - 在进行了一些演讲、发布到论坛、邮件列表之后,请点击此处...),他们还没有学会如何开发 iPhone 应用程序.无论如何编写应用程序,iPhone 开发人员都必须这样做.MonoTouch 不是障碍——例如,它知道 Apple 希望你的应用程序看起来像某种方式并以某种方式工作——它应该像其他(好的)iPhone 应用程序一样外观、感觉和行为,而不应该尝试为手机编写桌面应用程序的例子之一(这是您的普通开发人员在过渡到移动开发时犯的第一个错误).

The biggest reason you're going to see for MT apps being rejected is that MT devs, in my experience (I've been talking to quite a few - after giving some talks, posting to forums, mailing lists, here...), is they they haven't yet learned how to develop an iPhone app. That's something iPhone devs must do regarldess of how they write their apps. MonoTouch isn't the obstacle - it's knowing, for example, that Apple wants your app to look a certain way and to work in a certain way - it should look and feel and behave like other (good) iPhone apps, and shouldn't be among the examples of attempts to write desktop apps for a phone (which is where your average dev makes his first mistake when transitioning to mobile development).

最终,您选择的工具并不重要,只要它创造出符合 Apple 规则的位(如 MonoTouch).真正的障碍是学习应用程序设计的 iPhone 方式.

Ultimately, your tool of choice isn't going to matter as long as it creates bits that play by Apple's rules (like MonoTouch). The real obstacle is learning the iPhone Way of app design.

.Net 应用程序开发人员,无论是在 Windows、Windows Mobile 还是运行 Mono(不是 MonoTouch)的任何地方,都习惯于根据自己的喜好开发应用程序.这在 iPhone 世界中是行不通的.

.Net application devs, whether on Windows, Windows Mobile, or wherever Mono (not MonoTouch) runs, are accustomed to developing apps according to their own tastes. That doesn't fly in the iPhone world.

您可以放心使用 MonoTouch.如前所述,Apple 批准 MT 应用程序.

You can safely go with MonoTouch. As has been shown, Apple will approve MT apps.

您真正需要做的事情(同样,无论您选择哪种开发堆栈)是阅读 Apple 关于 iPhone 应用程序设计及其指南的文档.有一大群开发者将他们的应用程序拒绝归咎于 Apple 是邪恶的(或其他任何 - 不知情的借口,基本上),而事实是他们的应用程序是垃圾并且很明显开发人员没有遵守规则(甚至懒得看规则了).

The thing you really need to do (again, regardless of which dev stack you choose) is read Apple's docs on iPhone app design and their guidelines. There's a huge crowd of devs out their attributing their app rejections to Apple being evil (or whatever - uninformed excuses, basically), when the truth is that their apps are garbage and it's clear the devs didn't play by the rules (or even bother to read the rules).

最后,在许多情况下,使用 MonoTouch 时您将编写更少的代码,并且为此付出的代价是一个更大的应用程序包(正如我所说,它在被压缩后大小会非常合理)分布).

In the end, in many cases, you'll write far less code when using MonoTouch, and the cost for that is a larger app bundle (which, as I said, will come out very reasonably sized after it's been zipped for distribution).

这不是什么大问题.使用 3g,用户可以毫不费力地下载 2-3MB 大小的应用程序.如果它小到可以发送 OTA,则一切正常.如果您的应用程序超出限制,则可能是嵌入资源(媒体 - 图像、视频等 - 这就是捆绑包通常膨胀到仅限 wifi 的大小的方式),这也是 Objective-C 开发人员必须处理的问题,所以这不是 MonoTouch 的问题.

That's not much of an issue. With 3g, users don't sweat downloading 2-3MB sized apps. If it's small enough to send OTA, everything's fine. And in cases where your app goes over the limit, it's likely embedded resources (media - images, videos, etc. - that's how bundles typically swell to wifi-only sizes), and that's something Objective-C devs have to deal with, too, so that's not a MonoTouch problem.

因此,请忽略那些讨厌的人(他们甚至没有尝试过 MonoTouch 或费心了解它的工作原理),请放心,只要您的应用符合 Apple 的准则,就没有没有理由让他们拒绝它.这并不意味着只要您正确设计了您的应用程序(很多应用程序被无缘无故拒绝),就可以保证被接受,但是您可以认为自己或多或少地与使用 Apple 工具的开发人员处于平等地位.

So, ignore the haters (who haven't even tried MonoTouch or bothered to learn how it works), and rest assured that, as long as your app conforms to Apple's guidelines, there's no reason for them to reject it. It doesn't mean your app is guaranteed acceptance as long as you design it correctly (plenty of apps get rejected for no apparent reason), but you can consider yourself, more or less, to be on equal footing with devs using Apple's tools. 

希望这有帮助:)

这篇关于MonoTouch 是用于 iPhone 开发的可行平台吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆