色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

Mono向Mac OS應(yīng)用程序開發(fā)示好

Mono正在努力改進(jìn)各個平臺上的使用體驗。近日Miguel de Icaza在博客上宣布MonoMac發(fā)布了新的版本MonoMac是面向Mac OSX API的C#綁定,其API設(shè)計主要受到了MonoTouch的啟發(fā),后者可以基于Mono開發(fā)原生的ios應(yīng)用程序。MonoMac套件的目標(biāo)之一,也是發(fā)布獨(dú)立的.app應(yīng)用程序,讓最終用戶擺脫對Mono的依賴。

多年以前,Geoff Norton創(chuàng)建了CocoaSharp,這是第一套面向Cocoa API的.NET綁定。從那時起,Mono用戶開始嘗試?yán)?NET客戶端調(diào)用Objective-C的API。幾年下來,也出現(xiàn)了其他幾個設(shè)法集成Objective-C和.NET語言的框架,它們各有利弊。一年多前Mono希望可以將這些競爭對手結(jié)合起來,可惜最后無疾而終。

之后MonoTouch的成功則是一個良好的基礎(chǔ),于是Mono開始將Cocoa API使用C#和.NET世界中的模式與慣例用法表現(xiàn)出來,并提供開發(fā)人員整套Cocoa應(yīng)用程序的開發(fā)工具。在設(shè)計方面,MonoMac參考了《Framework Design Guidelines》一書中總結(jié)出的設(shè)計決策及建議,主要包括:

  • 減少意外
  • 基于C#及其他.NET類庫
  • 降低出錯的可能
  • 增加開發(fā)樂趣
  • 提高生產(chǎn)力,節(jié)省開發(fā)人員時間
  • 利用一切.NET方面的知識

Miguel表示,.NET從一開始便設(shè)計成為一個易于互操作的框架,他對于跨運(yùn)行時及框架的無縫通信提供了許多高級的支持,這對創(chuàng)建Cocoa API的綁定很有幫助。MonoMac的設(shè)計原則與MonoTouch非常接近,它充分考慮到.NET程序員的習(xí)慣需求,例如使用Lambda表達(dá)式和委托來表示Objective-C API中的“block”。

Cocoa的API由兩部分組成,一部分是基于C的API,例如AudioToolbox、CoreGraphics、CoreFundation和CoreText,它們利用P/Invoke的方式直接封裝成C#類。而在UI層面上則是大量的Objective-C編寫的API,例如Foundation和AppKit。MonoMac提供了新的一套新的綁定引擎MonoMac.ObjCRuntime,以及btouch綁定生成器。btouch綁定生成器接受C#語言形式的API約定,自動生成一個綁定,例如MSActionCell:

[BaseType (typeof (NSCell))]
interface NSActionCell {
[Export (
"initTextCell:")]
IntPtr Constructor (
string aString);

[Export (
"initImageCell:")]
IntPtr Constructor (NSImage image);

[Export (
"target")]
NSObject Target { get; set; }

[Export (
"action")]
Selector Action { get; set; }

[Export (
"tag")]
int Tag { get; set; }
}

NET技術(shù)Mono向Mac OS應(yīng)用程序開發(fā)示好,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 松原市| 边坝县| 阿鲁科尔沁旗| 山东省| 修水县| 宜章县| 秦安县| 城固县| 汉沽区| 二连浩特市| 平罗县| 徐闻县| 河东区| 湟源县| 紫金县| 偏关县| 海丰县| 黄陵县| 浦东新区| 南涧| 阜城县| 望奎县| 汕头市| 布尔津县| 开平市| 弋阳县| 锡林浩特市| 榆社县| 新建县| 江北区| 天长市| 康乐县| 垫江县| 高雄市| 肇源县| 汝南县| 五指山市| 鄱阳县| 黑龙江省| 资源县| 利辛县|