BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

MonoMac为Cocoa开发提供了.NET风格的API

| 作者 Jonathan Allen 关注 612 他的粉丝 ,译者 李永伦 关注 0 他的粉丝 发布于 2011年4月1日. 估计阅读时间: 2 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

MonoMac,为C#在OS X上创建GUI工具包的最新尝试,已经发布1.0版本了。MonoMac的设计会更多地和其它.NET/Mono类库保持一致。这是通过为Cocoa API提供一层遵循.NET Framework Design Guidelines的厚的包装做到的。

早期的类库,比如MonObjc和已经废弃的CocoaSharp使用了瘦的,通常在Cocoa API上机械生成的交互层。这要求使用selector,这是一种Objective-C使用的OOP消息传递方式。这些类库没有把selector映射到C#的基于方法的面向对象编程方式,而是简单地提供了一系列objc_msgSend函数。而所需的objc_msgSender的版本则依赖于参数和返回值类型,有时候还依赖于CPU架构体系。

使用包装原生代码的类库之外的一个选择是使用跨平台工具包。这里提供的选择都是熟悉的。Gtk#和已经废弃的Windows.Forms都简单易用,但不能创建原生用户界面的应用程序。此外还有Silverlight,它鼓励你重新定制应用程序的用户界面风格而不是试图模仿原生应用程序。

正如前面提到的,MonoMac的设计理念是按照.NET的规范尽可能多地提供Cocoa的特性。这意味着你可以安全地创建Objective-C类的子类,重写基类的方法以及调用基类的构造函数。客户端代码可以通过Objective-C风格的委托和.NET风格的事件监听事件通知。.NET里的委托、lambda和闭包可以映射到Objective-C代码块

MonoMac包含了发布到Mac App Store的支持。应用程序是通过Mono包装器打包给应用商店的,它包含了Mono运行时的副本,这样用户就无需另外下载了。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

坑爹啊!Infoq的编辑是干什么吃的! by Zhang Ethan

坑爹啊,Google翻译的吧!我还以为啥好新闻呢!擦

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT