iOS XCode应用程序可以引用MonoTouch程序集吗?
问题描述:
我正在考虑如何最好地在团队之间为新项目划分工作。我们有一个Windows C#应用服务团队和一个较小的iOS Objective-C团队。也可能迟早会需要Android应用程序。iOS XCode应用程序可以引用MonoTouch程序集吗?
设备上调用我们的服务并处理与本地数据存储同步的域层/ api程序集是用C#编写并使用MonoTouch编译的逻辑组件。然后Objective-C团队引用这个组件。那可能吗?我在MonoTouch引用C程序集的时候阅读了很多,但是它能以其他方式工作吗?
如果有可能的话,尝试这种方法的任何经验都会很棒!
感谢 亚伦
答
虽然技术上可行,就没有今天这样的没有简单的方法。
您现在可以做的最好的事情是从C#启动应用程序,然后如果需要,将控制权转移到您的Objective-C代码。在C#的推出,你可以注册方法,使用P叫回用Objective-C代码/ Invoke的调用是这样的:
delegate void some_callback_t (int parameter1, int parameter2);
[DllImport ("__Internal")]
void SetCallback (some_callback_t callback);
static void mycallback (int parameter1, int parameter2)
{
// Here goes your C# logic to be called by C
}
然后调用:
SetCallback (mycallback);
注意,myCallBack函数必须是静态方法(静态编译的限制)。然后你的Objective-C代码可以通过执行类似的方式来使用服务:
typedef (*callback_t) (int p1, int p2);
callback_t callback;
void SetCallback (callback_t cb)
{
callback = cb;
}
void InvokeCSharp()
{
callback (1, 2);
}
嗨米格尔,感谢您的及时响应。是否有可能发回复杂的DTO?是否需要特殊编组? - 这看起来不像我可以说服我们的iOS大师使用的东西。谢谢 – Aaron 2011-03-10 23:56:01
我不知道DTO的含义。 – 2011-03-11 06:30:04
DTO =数据传输对象。一般而言,它只是一个简单的对象,只具有属性,并且没有行为,用于跨不同层发送数据。 – 2011-03-11 19:25:10