设为首页
收藏本站
淘宝精选
开启辅助访问
登录
注册后绑定Q登陆
手机号登录
手机号码,快捷登录
微信登录
QQ登录
快捷导航
发布信息
搜索
搜索
支持我们
使用96IE来支持论坛
首页
任务
勋章
签到
签到等于每天打卡
导读
邀请码
装机必备的软件、去广告版
装机助手
装机网
精品操作系统下载
免费邀请码
记录
Doing
每日签到
本版
帖子
用户
PCOS技术网
»
首页
›
≡技术交流≡
›
电脑技术交流
›
Mono向Mac OS应用程序开发示好
返回列表
发新帖
查看:
480
|
回复:
0
Mono向Mac OS应用程序开发示好
[复制链接]
tyjawp
tyjawp
当前离线
积分
1935
IP卡
狗仔卡
该用户从未签到
发表于 2010-10-28 17:00
|
河南
|
显示全部楼层
|
阅读模式
Mono正在努力改进各个平台上的使用体验。近日Miguel de Icaza在博客上宣布MonoMac发布了新的版本。MonoMac是面向Mac OSX API的C#绑定,其API设计主要受到了MonoTouch的启发,后者可以基于Mono开发原生的iOS应用程序。MonoMac套件的目标之一,也是发布独立的 .app应用程序,让最终用户摆脱对Mono的依赖。
多年以前,Geoff Norton创建了CocoaSharp,这是第一套面向Cocoa API的.NET绑定。从那时起,Mono用户开始尝试利用.NET客户端调用Objective-C的API。几年下来,也出现了其他几个设法集成 Objective-C和.NET语言的框架,它们各有利弊。一年多前Mono希望可以将这些竞争对手结合起来,可惜最后无疾而终。
之后MonoTouch的成功则是一个良好的基础,于是Mono开始将Cocoa API使用C#和.NET世界中的模式与惯例用法表现出来,并提供开发人员整套Cocoa应用程序的开发工具。在设计方面,MonoMac参考了《Framework Design Guidelines》一书中总结出的设计决策及建议,主要包括:
减少意外
基于C#及其他.NET类库
降低出错的可能
增加开发乐趣
提高生产力,节省开发人员时间
利用一切.NET方面的知识
Miguel表示,.NET从一开始便设计成为一个易于互操作的框架,他对于跨运行时及框架的无缝通信提供了许多高级的支持,这对创建Cocoa API的绑定很有帮助。MonoMac的设计原则与MonoTouch非常接近,它充分考虑到.NET程序员的习惯需求,例如使用Lambda表达式和委托来表示Objective-C API中的“block”。
Cocoa的API由两部分组成,一部分是基于C的API,例如AudioToolbox、CoreGraphics、CoreFundation 和CoreText,它们利用P/Invoke的方式直接封装成C#类。而在UI层面上则是大量的Objective-C编写的API,例如 Foundation和A**it。MonoMac提供了新的一套新的绑定引擎MonoMac.ObjCRuntime,以及btouch绑定生成器。 btouch绑定生成器接受C#语言形式的API约定,自动生成一个绑定,例如MSActionCell:
[BaseType (typeof (NSCell))]
interface NSActionCell {
[Export ("initTextCell:")]
IntPtr C**tructor (string aString);
[Export ("initImageCell:")]
IntPtr C**tructor (NSImage image);
[Export ("target")]
NSObject Target { get; set; }
[Export ("action")]
Selector Action { get; set; }
[Export ("tag")]
int Tag { get; set; }
}
由于生成Objective-C API有大量重复工作,MonoMac还提供了一个头文件解析工具,可以从Objective-C的头文件中生成绝大部分的API。不过对于某些生成的结果还需要进行一些修改才能满足设计的要求,例如,NSArray的参数和返回值需要根据文档修改为合适的强类型。
MonoMac还没有覆盖完整的Cocoa API,不过已经基本可以用于创建API,并已经开放接纳社区的贡献。目前的绑定有:
AddressBook(完成)
AudioToolbox(完成)
A**it(90%完成)
CoreAnimation(完成)
CoreFoundation(已完成设计原则中需要的部分)
CoreText(完成)
CoreLocation(完成)
CoreData(完成)
CoreGraphics(完成)
Foundation(已完成设计原则中需要的部分,包括其他部分的辅助工具)
WebKit(缺少DOM代码)
MonoMac仅仅是一套用于开发OSX应用程序的类库。MonoMac团队同样发布了一套基于MonoDevelop的开发工具,其生成结果便是 Mac OS下的app应用程序包。此外,Mono 2.8还包含了一个新工具叫做“Mono打包器(bundler)”。这个打包器可以检查你的.NET应用程序,并将其依赖的部分打包在一起。这个技术如今已经用于OSX版本的Banshee项目(一款基于Mono和Gtk#的播放器),这样发布后的应用程序无需在目标机器装有Mono框架。
MonoMac使用MIT X11许可协议发布。源码分为两部分:monomac和maccore,都可以在GitHub上获得。前者包含了面向MacOS的绑定,而后者则包含了MonoMac和MonoTouch共用的代码。如果您对OS X下的.NET开发及MonoMac感兴趣,可以参考这篇开发向导。
另一方面,最近Logos Bible Software的技术领导人David Mitchell在Mono邮件列表上表示,他们基于Mono,将原本为Windows平台开发的软件移植到了Mac平台上,两者共享了绝大部分代码,唯一不同的只是UI方面从WPF变成了OS X的原生界面。不过与MonoMac的做法不同,Logos Bible Software的做法是在Objective-C编写的UI界面中调用.NET代码。
PCOS系统下载站:http://zhuangji.wang
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
抢沙发
千斤顶
显身卡
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册后绑定Q登陆
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页