使用C#和Mono为OS X构建Cocoa UI

时间:2009-04-05 23:45:02

标签: c# cocoa macos mono

有没有人花时间比较Mono的各种Objective C桥和相关的Cocoa包装器?

我想将现有的C#应用​​程序移植到OS X上运行。理想情况下,我将在Mono上运行该应用程序,并为其构建本机Cocoa UI。

我想知道哪座桥是最好的选择。

如果它对任何人都有用,这里有一些我到目前为止找到的桥梁的链接:

6 个答案:

答案 0 :(得分:5)

Mono团队发布了一座名为MonoMac的新桥。

它基本上是他们为iPhone制作的MonoTouch框架的桌面版本。

Miguel在他的博客上宣布了这座新桥:http://tirania.org/blog/archive/2010/Apr-19.html

一旦MonoMac成熟,我怀疑它将成为人们使用的 桥。

答案 1 :(得分:3)

我最近用F#尝试了Monobjc,NObjective和MObjc / MCocoa,我会选择MObjc / MCocoa。

Monobjc就像你写的最好的文档和打包,但与其他两个非常slow相比,并没有从ObjC“重新抛出异常”。

我相信NObjective和MObjc / MCocoa是唯一一个重新抛出ObjC异常的人,这就是为什么我发现它们是唯一真正的替代品。

正如所讨论的那样here NObjective使用带有继承的结构,我发现它非常可怕并且让我最终选择了MObjC / MCocoa。

(你可能也有许可证问题.Monobjc和NObjective属于LGPL,MObjc / MCocoa属于麻省理工学院......)

答案 2 :(得分:1)

我认为NObjective是最好的选择因为它具有Objective-C包装器的自动代码生成功能,可以轻松配置为其他版本的Mac OS重新生成包装器。

答案 3 :(得分:1)

好的,我会问:你为什么要这样做? Cocoa的UI架构,包括Cocoa-std delgates和Cocoa bindngs与Objective-C密切相关。 Interface Builder和Objective-C的结合非常有效。虽然您可以将Interface Builder与Objective-C(包括PyObjC,MacRuby和许多C#桥)结合使用,但由于框架与您选择的语言之间存在任何阻抗不匹配,您将不可避免地失去生产力。使用C#,这种不匹配意义重大。由于您正在编写本机UI,从而失去了从C#中获得的任何跨平台优势,我将使用Objective-C。对于一个称职的C / C ++ / C#/ Java /等。程序员,在Objective-C中通常需要2-3天才能变得舒适和高效。

答案 4 :(得分:1)

在Mono-OSX邮件列表上对各种桥梁进行了相当冗长的讨论。

讨论从Miguel开始here

  • 宣布Novell将不再维护Cocoa#。
  • 试图统一社区的其余工作。

如果您阅读其余讨论内容,Mono社区似乎倾向于Monoobjc或MObjc / MCocoa;因此,如果您正在进行自己的调查,可能需要关注这些问题。

答案 5 :(得分:0)

不会问为什么,因为你有理由我确定。

我会看一下Unity3D项目,看看你是否能够证明他们是如何做到的。看起来,嗯,很难。