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

查看:103
本文介绍了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商店下来。

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. 

无论如何:

- 正如之前的回答中所述,有一些MonoTouch应用已发布到App Store 。无论是两个还是一个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应用程序大小限制范围内(我提出这个问题因为这是一个问题MT n0obs(正确)倾向于问)。因此,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应用程序设计文档及其指南。当真相是他们的应用程序是垃懒得阅读规则)。

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的指南,就有 no 理由拒绝它。这并不意味着你的应用程序只要你正确设计就可以保证接受(很多应用程序都会因为没有明显的原因而被拒绝),但你可以认为自己或多或少与使用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天全站免登陆