2012-04-13 30 views
2

我打算使用D在Mac OS X上創建本機應用程序。爲此,D必須與Cocoa API進行交互。我不知道這種綁定可以如何完成。我已經看了Cocado,並知道了米歇爾·福廷的D-ObjC bridge,並希望得到啓發的一些細節:如何創建D-可可端口?

  • 什麼是移植可可d自己(或任何其他可能的)的方法呢? - 在這裏,我基本上要求提供技術性閱讀資料(書籍/文章/參考資料等);

  • 是否可以直接或通過C ABI與ObjC建立ABI兼容性? - 有一個question on stackoverflow答案描述了可以用Objective-C's Runtime Reference實現的結果;

  • 是否可行,使這種東西很好地工作,並獲得像Mac OS X上的Qt框架一樣的性能和穩定性水平?

我在這方面沒有任何經驗,所以請原諒我的技術故障。任何幫助將是可觀的。

在此先感謝您的回覆。

回答

1
  • 什麼可可端口的大多數端口需要做的是在.H轉化爲.di,並提供一個瘦包裝和一般utils的,

    這可能包括通過opDispatch(string sel,A...)(A args)超載,將翻譯一些語法糖obj.call1(arg1).call2(arg2)正確obj_msgsend(obj.ptr,NSSelectorFromString(sel),args)電話

  • 可以通過C ABI你可以閱讀更多關於in the D spec

  • 確定這是可能的,然而許多事物的對象。 C編譯器可以檢查d編譯器無法檢查單元測試代碼需要找那些

+0

感謝您的回覆!這確實是端口應該被實現的方式,但是由於Jacob Carlborg描述的問題(請參閱我自己對此問題的回答),我將嘗試使用D編譯器的修改版本來實現這些功能。 – Rizo 2012-04-18 14:07:28

1

我有一個更詳細的回答這個問題,從雅各Carlborg的dlang.org forum