Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在MonoTouch和Objective-C之间做出选择?_C#_Objective C_Mono_Xamarin.ios - Fatal编程技术网

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

C# 如何在MonoTouch和Objective-C之间做出选择?,c#,objective-c,mono,xamarin.ios,C#,Objective C,Mono,Xamarin.ios,在今天的一次本地.Net活动中,我们在Mono上坐了一段时间之后,MonoTouch的使用被作为iPhone开发的一种替代方案。在C#和.Net中非常舒适,这似乎是一个吸引人的选择,尽管Mono堆栈有一些古怪之处。然而,由于MonoTouch的价格是400美元,如果这是iPhone开发的方式,我有点为难 任何人都有使用MonoTouch和Objective-C进行开发的经验,如果是这样的话,使用MonoTouch进行开发是否比学习Objective-C简单得多、速度更快,反过来也值得花400美元

在今天的一次本地.Net活动中,我们在Mono上坐了一段时间之后,MonoTouch的使用被作为iPhone开发的一种替代方案。在C#和.Net中非常舒适,这似乎是一个吸引人的选择,尽管Mono堆栈有一些古怪之处。然而,由于MonoTouch的价格是400美元,如果这是iPhone开发的方式,我有点为难


任何人都有使用MonoTouch和Objective-C进行开发的经验,如果是这样的话,使用MonoTouch进行开发是否比学习Objective-C简单得多、速度更快,反过来也值得花400美元?

如果这是你将开发的唯一一款iPhone应用程序,而且你对开发Mac应用程序也没有兴趣,是吗,那么MonoTouch的成本可能是值得的


如果你认为你会开发更多的iPhone应用程序,或者想做一些Mac原生开发,那么学习Objective-C和相关框架可能是值得的。另外,如果你是喜欢学习新事物的程序员,那么这是一个有趣的学习新范式。

因此,我对前面一个问题的回答是学习Objective-C。(另外,不要忘记调试支持)

这可能会冒犯一些人,但不会冒犯他们 老实说,如果你要做任何事的话 认真发展,你应该学习 目标C.不知道目标C 在iPhone的开发中,这将是一个巨大的挑战 阻碍。你不能 理解很多例子;你必须 处理Mono的怪癖 如果你有工作方面的知识 目标C你可以得到更多 平台外文档

就我个人而言,我不理解这个问题 表示增加 您需要的信息量 喜欢使用单声道而不是单声道 平台的本地语言。看来 对我来说有点适得其反。我 想一想,如果这是一个非常昂贵的 命题(学习一门新语言) 那么它可能是值得花费的 关于基础编程的一些时间 让学习新概念 语言是一种相当便宜的工具 提议

他还写道:


Monotouch现在对你来说更容易了。但后来更难了

例如,当你需要测试新种子,但由于某种原因打破了单一接触时会发生什么

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

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

对于任何平台,你都应该使用直接表达该平台设计理念的平台——在iPhone上,即Objective-C。从相反的角度思考,如果曾经使用GTK编程的Linux开发人员想要编写Windows应用程序,您会认真建议他们不要使用C#并坚持使用GTK,因为这样做“更容易”



就我个人而言,我认为学习Objective-C会让你过得更好

简言之:

  • “学习Objective-C”并不像你想象的那样让人望而生畏,你甚至可以在刚开始的几周后就开始享受它
  • 您已经熟悉了带有大量*&(){}的“C风格”语法;到处
  • 苹果在记录事情方面做得很好
  • 您将按照苹果的预期方式与iPhone交互,这意味着您将直接从源代码而不是通过某些过滤器获得好处
我发现像Unity和MonoTouch这样的项目应该“节省您的时间”,但最终您还是需要学习他们的领域特定语言,并且有时不得不回避一些事情。所有这些可能会花费你尽可能长的时间来学习你试图避免学习的语言(在日历时间内)。最后,你没有节省任何时间,你与一些产品紧密结合

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


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

补充其他人已经说过的话(好吧!):我的感觉是,您需要担心的bug数量基本上翻了一番,将MonoTouch中的应用添加到iPhone操作系统中已有的应用中。更新新的操作系统版本将比正常情况下更加痛苦。哎呀,到处都是

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


但是对于那些从零开始的人来说,我真的不认为这是值得的或明智的。

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