2012-04-13 31 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