C# 如何在 MonoTouch 和 Objective-C 之间做出选择?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/1583856/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-06 19:03:36  来源:igfitidea点击:

How to decide between MonoTouch and Objective-C?

c#objective-cmonoxamarin.ios

提问by jamesaharvey

After sitting through a session today on Mono at a local .Net event, the use of MonoTouch was 'touched' upon as an alternative for iPhone development. Being very comfortable in C# and .Net, it seems like an appealing option, despite some of the quirkiness of the Mono stack. However, since MonoTouch costs $400, I'm somewhat torn on if this is the way to go for iPhone development.

今天在当地的 .Net 活动上参加了 Mono 会议后,“触及”了使用 MonoTouch 作为 iPhone 开发的替代方案。在 C# 和 .Net 中非常舒服,尽管 Mono 堆栈有些古怪,但它似乎是一个吸引人的选择。然而,由于 MonoTouch 的价格为 400 美元,所以我对 iPhone 开发的方式是否如此感到有些困惑。

Anyone have an experience developing with MonoTouch and Objective-C, and if so is developing with MonoTouch that much simpler and quicker than learning Objective-C, and in turn worth the $400?

任何人都有使用 MonoTouch 和 Objective-C 进行开发的经验,如果有的话,使用 MonoTouch 进​​行开发是否比学习 Objective-C 更简单、更快捷,而且价值 400 美元?

采纳答案by Rory Blyth

I've seen this question (and variations on it) a lot lately. What amazes me is how often people respond, but how few answer.

我最近经常看到这个问题(及其变体)。让我吃惊的是人们通常怎么回应,但怎么少的答案

I have my preferences (I enjoy both stacks), but this is where most "answers" start to go wrong. It shouldn't be about what I want (or what anybody else wants).

我有我的偏好(我喜欢两个堆栈),但这是大多数“答案”开始出错的地方。它不应该是关于我想要什么(或其他人想要什么)。

Here's how I'd go about determining the value of MonoTouch - I can't be objective, obviously, but I think this is pretty zealotry-free:

以下是我如何确定 MonoTouch 的价值 - 显然,我不能客观,但我认为这是非常狂热的:

  • Is this for fun or business? If you wanted to get into consulting in this area, you could make your $399 back very quickly.

  • Do you want to learn the platform inside-out, or do you "just" want to write apps for it?

  • Do you like .Net enough that using a different dev stack would take the fun out of it for you? Again, I like both stacks (Apple and Mono), but for me MonoTouch makes the experience that much more fun. I haven't stopped using Apple's tools, but that's mainly because I really do enjoy both stacks. I love the iPhone, and I love .Net. In that case, for me, MonoTouch was a no-brainer.

  • Do you feel comfortable working with C? I don't mean Objective-C, but C - it matters because Objective-C isC. It's a nice, fancy, friendly OO version, but if pointers give you the heebie-jeebies, MonoTouch is your friend. And don't listen to the naysayers who think you're a dev wuss if it happens that you don'tlike pointers (or C, etc.). I used to walk around with a copy of the IBM ROM BIOS Pocket Reference, and when I was writing assembly and forcing my computer into funny video modes and writing my own font rendering bits for them and (admittedly trashy) windowing systems, I didn't think the QuickBasic devs were wusses. I wasa QuickBasic dev (in addition to the rest). Never give in to nerd machismo. If you don't like C, and if you don't like pointers, and if you want to stay as far away from manual memory management as possible (and, to be fair, it's not bad at all in ObjC), then... MonoTouch. And don't take any guff for it.

  • Would you like to target users or businesses? It doesn't matter much to me, but there are still people out there on Edge, and the fact is: you can create a far smaller download package if you use Apple's stack. I've been playing around with MonoTouch, and I have a decent little app going that, once compressed, gets down to about 2.7 MB (when submitting your app for distribution, you zip it - when apps are downloaded from the store, they're zipped - so when figuring out if your app is going to come in under the 10MB OTA limit, zip the sucker first - you WILL be pleasantly surprised with MonoTouch). But, MT happiness aside, half a meg vs. nearly three (for example) is something that might be important to you if you're targeting end users. If you're thinking of enterprise work, a few MB won't matter at all. And, just to be clear - I'm going to be submitting a MT-based app to the store soonishly, and I have no problem whatsoever with the size. Doesn't bother me at all. But if that's something that would concern you, then Apple's stack wins this one.

  • Doing any XML work? MonoTouch. Period.

  • String manipulation? Date manipulation? A million other little things we've gotten used to with .Net's everything-AND-the-kitchen-sink frameworks? MonoTouch.

  • Web services? MonoTouch.

  • Syntactically, they both have their advantages. Objective-C tends to be more verbose where you have to write it. You'll find yourself writing code with C# you wouldn't have to write with ObjC, but it goes both ways. This particular topic could fill a book. I prefer C# syntax, but after getting over my initial this-is-otherworldly reaction to Objective-C, I've learned to enjoy it quite a bit. I make fun of it a bit in talks (it isweird for devs who're used to C#/Java/etc.), but the truth is that I have an Objective-C shaped spot in my heart that makes me happy.

  • Do you plan to use Interface Builder? Because, even in this early version, I find myself doing far less work to build my UIs with IB and then using them in code. It feels like entire steps are missing from the Objective-C/IB way of doing things, and I'm pretty sure it's because entire steps are missing from the Objective-C/IB way of doing things. So far, and I don't think I've sufficiently tested, but so far, MonoTouch is the winner here for how much less work you have to do.

  • Do you think it's fun to learn new languages and platforms? If so, the iPhone has a lot to offer, and Apple's stack will likely get you out of your comfort-zone - which, for some devs, is fun(Hi - I'm one of those devs - I joke about it and give Apple a hard time, but I've had a lot of fun learning iPhone development through Apple's tools).

  • 这是为了好玩还是为了生意?如果您想从事该领域的咨询工作,您可以很快收回 399 美元。

  • 您是想从内到外学习该平台,还是“只是”想为其编写应用程序?

  • 您是否足够喜欢 .Net,以至于使用不同的开发堆栈会给您带来乐趣?同样,我喜欢两种堆栈(Apple 和 Mono),但对我来说 MonoTouch 使体验变得更加有趣。我并没有停止使用 Apple 的工具,但这主要是因为我真的很喜欢这两个堆栈。我喜欢 iPhone,也喜欢 .Net。在那种情况下,对我来说,MonoTouch 是轻而易举的事。

  • 你觉得和 C 一起工作很舒服吗?我指的不是 Objective-C,而是 C - 这很重要,因为 Objective-CC。它是一个不错的、花哨的、友好的 OO 版本,但是如果指针给你带来了heebie-jeebies,MonoTouch 是你的朋友。如果碰巧您喜欢指针(或 C 等),请不要听信那些认为您是开发人员的反对者。我曾经带着一份 IBM ROM BIOS Pocket Reference 四处走动,当我编写程序集并强制我的计算机进入有趣的视频模式并为它们和(公认的垃圾)窗口系统编写我自己的字体渲染位时,我没有不要认为 QuickBasic 开发人员是笨蛋。我一个 QuickBasic 开发(除了其余的)。永远不要屈服于书呆子大男子主义。如果你不喜欢 C,如果你不喜欢指针,如果你想尽可能远离手动内存管理(公平地说,它在 ObjC 中一点也不差),那么。 .. 单触。并且不要为此大吃一惊。

  • 您想定位用户还是企业?这对我来说并不重要,但仍然有人在 Edge 上,事实是:如果您使用 Apple 的堆栈,您可以创建一个小得多的下载包。我一直在玩 MonoTouch,我有一个不错的小应用程序,一旦压缩,它就会减少到大约 2.7 MB(在提交您的应用程序以进行分发时,您将其压缩 - 当应用程序从商店下载时,它们”重新压缩 - 因此,在确定您的应用程序是否会低于 10MB OTA 限制时,请先压缩吸盘 - MonoTouch 会给您带来惊喜)。但是,撇开 MT 的快乐不谈,如果您的目标是最终用户,那么半兆与近三兆(例如)对您来说可能很重要。如果您正在考虑企业工作,那么几 MB 根本无关紧要。和,只是要清楚 - 我很快就会向商店提交一个基于 MT 的应用程序,我对大小没有任何问题。根本不打扰我。但如果这是令人担忧的事情,那么 Apple 的堆栈会赢得这个。

  • 做任何 XML 工作吗?单触。时期。

  • 字符串操作?日期操纵?我们已经习惯了 .Net 的一切和厨房水槽框架的其他一百万件小事?单触。

  • 网页服务?单触。

  • 在语法上,它们都有其优点。Objective-C在你必须写的地方往往更冗长。您会发现自己使用 C# 编写代码,而不必使用 ObjC 编写代码,但它是双向的。这个特定的主题可以填满一本书。我更喜欢 C# 语法,但在克服了我最初对 Objective-C 的这种超凡脱俗的反应之后,我学会了享受它。我在谈话中取笑它(对于习惯于 C#/Java/等的开发人员来说这奇怪),但事实是我心中有一个 Objective-C 形状的点,让我感到高兴。

  • 您打算使用 Interface Builder 吗?因为,即使在这个早期版本中,我发现自己用 IB 构建我的 UI 然后在代码中使用它们的工作要少得多。感觉就像 Objective-C/IB 的做事方式缺少整个步骤,我很确定这是因为 Objective-C/IB 的做事方式缺少整个步骤。到目前为止,我认为我还没有进行充分的测试,但到目前为止,MonoTouch 是这里的赢家,因为您需要做的工作少得多。

  • 你认为学习新的语言和平台很有趣吗?如果是这样,iPhone 可以提供很多东西,而 Apple 的堆栈可能会让你走出舒适区——这对一些开发者来说很有趣(嗨——我是这些开发者之一——我开玩笑说Apple 的日子不好过,但我在通过 Apple 的工具学习 iPhone 开发方面获得了很多乐趣)。

There are so many things to consider. Value is so abstract. If we're talking about cost and whether it's worth it, the answer comes down to my first bullet item: if this is for business, and if you can get the work, you'll make your money right back.

有很多事情要考虑。价值是如此抽象。如果我们谈论成本以及它是否值得,答案归结为我的第一个要点:如果这是为了生意,如果你能得到工作,你会马上赚回你的钱。

So... that's about as objective as I can be. This is a short list of what you might ask yourself, but it's a starting point.

所以......这就是我所能做到的客观。这是您可能会问自己的问题的简短列表,但这是一个起点。

Personally (let's drop the objectivity for a moment), I love and use both. And I'm glad I learned the Apple stack first. It was easier for me to get up and running with MonoTouch when I already knew my way around Apple's world. As others have said, you're still going to be working with CocoaTouch - it's just going to be in a .Net-ized environment.

就个人而言(让我们暂时放弃客观性),我喜欢并使用两者。我很高兴我首先学习了 Apple 堆栈。当我已经熟悉 Apple 的世界时,我更容易上手并运行 MonoTouch。正如其他人所说,您仍将使用 CocoaTouch - 它只是在 .Net 化环境中。

But there's more than that. The people who haven't used MonoTouch tend to stop there - "It's a wrapper blah blah blah" - that's not MonoTouch.

但还有更多。没有使用过 MonoTouch 的人往往会停在那里——“这是一个包装等等”——那不是 MonoTouch。

MonoTouch gives you access to what CocoaTouch has to offer while also giving you access to what (a subset of) .Net has to offer, an IDE some people feel more comfortable with (I'm one of them), better integration with Interface Builder, and although you don't get to completely forget about memory-management, you get a nice degree of leeway.

MonoTouch 使您可以访问 CocoaTouch 所提供的内容,同时还可以使您访问 .Net 所提供的(子集),有些人觉得更舒服的 IDE(我是其中之一),与 Interface Builder 更好地集成,虽然您不会完全忘记内存管理,但您有很大的回旋余地。

If you aren't sure, grab Apple's stack (it's free), and grab the MonoTouch eval stack (it's free). Until you join Apple's dev program, both will only run against the simulator, but that's enough to help you figure out if you vastly prefer one to the other, and possible whether MonoTouch is, for you, worth the $399.

如果您不确定,请获取 Apple 的堆栈(免费),并获取 MonoTouch 评估堆栈(免费)。在您加入 Apple 的开发计划之前,两者都只能在模拟器上运行,但这足以帮助您确定您是否非常喜欢另一个,以及 MonoTouch 对您来说是否值 399 美元。

And don't listen to the zealots - they tend to be the ones who haven't used the technology they're railing against :)

并且不要听狂热者的话——他们往往是那些没有使用过他们所反对的技术的人:)

回答by phoebus

If this is the only iPhone app you will ever develop, and you also have zero interest in developing Mac applications, ever, then MonoTouch is probably worth the cost.

如果这是您将开发的唯一 iPhone 应用程序,并且您对开发 Mac 应用程序的兴趣也为零,那么 MonoTouch 可能是值得的。

If you think you'll ever develop more iPhone apps, or will ever want to do some Mac native development, it's probably worth it to learn Objective-C and the associated frameworks. Plus, if you're the type of programmer that enjoys learning new things, it's a fun new paradigm to study.

如果您认为自己将开发更多 iPhone 应用程序,或者想要进行一些 Mac 本地开发,那么学习 Objective-C 和相关框架可能是值得的。另外,如果您是那种喜欢学习新事物的程序员,那么学习它是一种有趣的新范式。

回答by BobbyShaftoe

So, my answer to a previous similar questionis to learn Objective-C. (Also, don't forget about debugging support)

所以,我对之前类似问题的回答是学习 Objective-C。(另外,不要忘记调试支持)

This will probably offend some but to be honest, if you are going to do any serious development, you should learn Objective-C. Not knowing Objective-C in iPhone development will just be a hindrance. You won't be able to understand many examples; you have to deal with the quirks of Mono whereas if you had a working knowledge of Objective-C you could get a lot more out of the platform documentation.

Personally, I don't understand the position that says increasing the amount of information you need in favor of using Mono over the platform's native language. It seems somewhat counterproductive to me. I think if this is a very expensive proposition (learning a new language) then it may be worthwhile spending some time on fundamental programming concepts so that learning new languages is a fairly cheap proposition.

这可能会冒犯一些人,但老实说,如果您打算进行任何认真的开发,您应该学习 Objective-C。不了解 iPhone 开发中的 Objective-C 只会是一个障碍。你将无法理解很多例子;您必须处理 Mono 的怪癖,而如果您具有 Objective-C 的工作知识,则可以从平台文档中获得更多信息。

就我个人而言,我不理解这种立场说增加您需要的信息量以支持使用 Mono 而不是平台的母语。这对我来说似乎有些适得其反。我认为如果这是一个非常昂贵的提议(学习一门新语言),那么花一些时间在基本的编程概念上可能是值得的,这样学习新语言是一个相当便宜的提议。

Another useralso wrote this:

另一位用户也写道:



Monotouch is easier for you now. But harder later.

Monotouch 现在对您来说更容易了。不过以后更难了。

For example, what happens when new seeds come out you need to test against but break MonoTouch for some reason?

例如,当您需要测试新种子但由于某种原因破坏 MonoTouch 时会发生什么?

By sticking with Mono, any time you are looking up resources for frameworks you have to translate mentally into how you are going to use them with Mono. Your app binaries will be larger, your development time not that much faster after a few months into Objective-C, and other app developers will have that much more of an advantage over you because they are using the native platform.

通过坚持使用 Mono,任何时候您在查找框架资源时都必须在心理上转化为您将如何在 Mono 中使用它们。您的应用程序二进制文件会更大,在使用 Objective-C 几个月后,您的开发时间不会那么快,其他应用程序开发人员将比您拥有更多优势,因为他们使用的是本机平台。

Another consideration is that you are looking to use C# because you are more familiar with the language than Objective-C. But the vast majority of the learning curve for the iPhone is not Objective-C, it is the frameworks - which you will have to call into with C# as well.

另一个考虑因素是您希望使用 C#,因为您比 Objective-C 更熟悉该语言。但是 iPhone 的绝大多数学习曲线不是 Objective-C,而是框架——你也必须使用 C# 调用这些框架。

For any platform, you should use the platform that directly expresses the design philosophy of that platform - on the iPhone, that is Objective-C. Think about this from the reverse angle, if a Linux developer used to programming in GTK wanted to write Windows apps would you seriously recommend that they not use C# and stick to GTK because it was "easier" for them to do so?

对于任何平台,您都应该使用直接表达该平台设计理念的平台——在 iPhone 上,即 Objective-C。反过来想一想,如果一个习惯用 GTK 编程的 Linux 开发人员想编写 Windows 应用程序,您是否会认真地建议他们不要使用 C# 并坚持使用 GTK,因为这样做对他们来说“更容易”?



回答by slf

Personally I think you'll have a better time just learning Objective-C.

就我个人而言,我认为学习 Objective-C 会更好。

In short:

简而言之:

  • "Learning Objective-C" is not a daunting as you might think, you may even enjoy it after just the first few weeks
  • You are already familiar with the "C style" syntax with lots of *&(){}; everywhere
  • Apple has done a very good job of documenting things
  • You'll be interacting with the iPhone the way Apple intended, which means you'll get the benefits directly from the source not through some filter.
  • “学习Objective-C”并不像你想象的那样令人生畏,你甚至可以在最初几周后享受它
  • 您已经熟悉包含大量 *&(){}; 的“C 风格”语法。到处
  • 苹果在记录事情方面做得非常好
  • 您将按照 Apple 预期的方式与 iPhone 进行交互,这意味着您将直接从源头获得好处,而不是通过某些过滤器。

I have found that the projects like Unity and MonoTouch are supposed to "save you time" but ultimately you'll need to learn their domain specific language anyway and will have to side-step things at times. All that is probably going to take you just as long as it would to learn the language you were trying to avoid learning (in calendar time). In the end you didn't save any time and you are tightly coupled to some product.

我发现像 Unity 和 MonoTouch 这样的项目应该可以“节省您的时间”,但最终您无论如何都需要学习他们的领域特定语言,并且有时不得不回避一些事情。所有这些都可能需要你学习你试图避免学习的语言(在日历时间内)。最后,您没有节省任何时间,并且您与某些产品紧密耦合。

EDIT: I never meant to imply anything negative about .NET I happen to be a big fan of it. My point is that adding more layers of complexity just because you aren't yet comfortable with the quirky objc bracket notation doesn't really make much sense to me.

编辑:我从来没有想暗示任何关于 .NET 的负面信息,我碰巧是它的忠实粉丝。我的观点是,仅仅因为您对古怪的 objc 括号表示法还不满意而添加更多的复杂层对我来说并没有多大意义。

2019 update: It's 7 years later. I still feel the same way if not more so. Sure, 'domain specific language' may have been the wrong term to use, but I still believe it's much better to write directly for the platform you are working with and avoid compatibility layers and abstractions as much as possible. If you are worried about code reuse and re-work, generally speaking any functionality your cross platform app needs to perform can probably be accomplished with modern web technologies.

2019 年更新: 7 年后。如果不是更多,我仍然有同样的感觉。当然,“领域特定语言”可能是错误的术语,但我仍然相信直接为您正在使用的平台编写并尽可能避免兼容层和抽象会更好。如果您担心代码重用和返工,一般来说,您的跨平台应用程序需要执行的任何功能都可以通过现代 Web 技术来完成。

回答by Sixten Otto

To add to what others have already said (well!): my feeling is that you're basically doubling the number of bugs you have to worry about, adding the ones in MonoTouch to the ones already in iPhone OS. Updating for new OS versions will be even more painful than normal. Yuck, all around.

补充一下其他人已经说过的(好吧!):我的感觉是,您基本上将需要担心的错误数量增加了一倍,将 MonoTouch 中的错误添加到 iPhone 操作系统中已有的错误。更新新的操作系统版本将比平时更加​​痛苦。哎呀,到处都是。

The only compelling case I can see for MonoTouch is organizations that have lots and lots of C# programmers and C# code lying around that they mustleverage on iPhone. (The sort of shop that won't even blink at $3500.)

对于 MonoTouch,我能看到的唯一令人信服的案例是那些拥有大量 C# 程序员和 C# 代码的组织,他们必须在 iPhone 上利用这些代码。(那种3500美元甚至不会眨眼的商店。)

But for anyone starting out from scratch, I really can't see it as worthwhile or wise.

但是对于从头开始的任何人来说,我真的认为它不值得或明智。

回答by NSResponder

The cost of the MonoTouch library is entirely beside the point. The reason you shouldn't use Mono for your iPhone apps, is that it is a crutch. If you can't be bothered to learn the native tools, then I have no reason to believe that your product is worth downloading.

MonoTouch 库的成本完全无关紧要。你不应该为你的 iPhone 应用程序使用 Mono 的原因是它是一个拐杖。如果你懒得去学习原生工具,那么我没有理由相信你的产品值得下载。

Edit: 4/14/2010 Applications written with MonoTouch aren't eligible for the iTunes Store. This is as it should be. Apple saw plenty of shallow ports on the Mac, using cross-platform toolkits like Qt, or Adobe's own partial re-implementation of the System 7 toolbox, and the long and short of it is they're just not good enough.

编辑:2010 年 4 月 14 日使用 MonoTouch 编写的应用程序不符合 iTunes Store 的条件。这是应该的。苹果在 Mac 上看到了大量浅层移植,使用 Qt 等跨平台工具包,或者 Adob​​e 自己部分重新实现的 System 7 工具箱,总而言之,它们只是不够好。

回答by miguel.de.icaza

There is a lot of hearsay in this post from developers that have not tried MonoTouch andObjective-C. It seems to be mostly be Objective-C developers that have never tried MonoTouch.

这篇文章中有很多来自没有尝试过 MonoTouchObjective-C 的开发人员的传闻。似乎大部分是从未尝试过 MonoTouch 的 Objective-C 开发人员。

I am obviously biased, but you can check out what the MonoTouch community has been up to in:

我显然有偏见,但您可以查看 MonoTouch 社区的最新动态:

http://xamarin.com

http://xamarin.com

There you will find several articles from developers that have developed in both Objective-C and C#.

您会在那里找到几篇来自开发人员的文章,他们使用 Objective-C 和 C# 进行开发。

回答by Bryan

Three words: Linq to SQL

三个字:Linq to SQL

Yes it is well worth the $.

是的,这非常值得。

回答by Paul

Using Mono is not a crutch. There are many things that it adds to the iPhone OS. LINQ, WCF, sharable code between a Silverlight app, an ASP.NET page, a WPF app, a Windows Form app, and there's also mono for Android and it will work for Windows Mobile as well.

使用 Mono 不是一个拐杖。它为 iPhone 操作系统添加了许多功能。LINQ、WCF、Silverlight 应用程序、ASP.NET 页面、WPF 应用程序、Windows 窗体应用程序之间的可共享代码,还有适用于 Android 的单声道,它也适用于 Windows Mobile。

So, you can spend a bunch of time writing Objective-C (You'll see from many studies where the exact same sample code in C# is significantly less to write than OC) and then DUPLICATE it all for other platforms. For me, I chose MonoTouch because the Cloud App I'm writing will have many interfaces, the iPhone being only one of them. Having WCF data streaming from the cloud to MonoTouch app is insanely simple. I have core libraries that are shared among the various platforms and then only need to write a simple presentation layer for the iPhone/WinMobile/Android/SilverLight/WPF/ASP.NET deployments. Recreating it all in Objective-C would be an enormouswaste of time both for initial dev and maintenance as the product continues to move forward since all functionality would have to be replicated rather than reused.

因此,您可以花大量时间编写 Objective-C(您会从许多研究中看到,在 C# 中编写完全相同的示例代码明显少于 OC),然后将其全部复制到其他平台。对我来说,我选择 MonoTouch 是因为我正在编写的云应用程序将有很多界面,iPhone 只是其中之一。将 WCF 数据从云端流式传输到 MonoTouch 应用程序非常简单。我有在各种平台之间共享的核心库,然后只需要为 iPhone/WinMobile/Android/SilverLight/WPF/ASP.NET 部署编写一个简单的表示层。随着产品的不断发展,在 Objective-C 中重新创建这一切对于初始开发和维护来说都是一种巨大的时间浪费,因为所有功能都必须被复制而不是重用。

The people who are insulting MonoTouch or insinuating that users of it need a crutch are lacking the Big Picture of what it means to have the .NET framework at your fingertips and maybe don't understand proper separation of logic from presentation done in a way that can be reused across platforms and devices.

侮辱 MonoTouch 或暗示其用户需要拐杖的人缺乏触手可及的 .NET 框架意味着什么的大局,并且可能不理解以这种方式完成的逻辑与演示的正确分离可以跨平台和设备重复使用。

Objective-C is interesting and very different from many common languages. I like a challenge and learning different approaches... but not when doing so impedes my progress or creates unnecessary re-coding. There are some really great things about the iPhone SDK framework, but all that greatness is fully supported with MonoTouch and cuts out all the manual memory management, reduces the amount of code required to perform the same tasks, allows me to reuse my assemblies, and keeps my options open to be able to move to other devices and platforms.

Objective-C 很有趣,并且与许多常见语言截然不同。我喜欢挑战和学习不同的方法……但当这样做会阻碍我的进步或造成不必要的重新编码时,我就不喜欢了。iPhone SDK 框架确实有一些非常棒的地方,但是 MonoTouch 完全支持所有这些优势,并消除了所有手动内存管理,减少了执行相同任务所需的代码量,允许我重用我的程序集,以及让我的选择保持开放,以便能够转移到其他设备和平台。

回答by bpapa

Something I'd like to add, even though there's an accepted answer - who is to say that Apple won't just reject apps that have signs of being built with Mono Touch?

我想补充一点,即使有一个公认的答案 - 谁说苹果不会拒绝那些有使用 Mono Touch 构建的迹象的应用程序?