ios - iOS XCode 应用程序可以引用 MonoTouch 程序集吗?

标签 ios xamarin.ios

我正在考虑如何最好地在新项目的团队之间分配工作量。我们有一个 Windows C# 应用程序服务团队和一个较小的 iOS Objective-C 团队。也可能迟早需要 Android 应用程序。

设备上调用我们的服务并处理与本地数据存储同步的域层/API 程序集是用 C# 编写并使用 MonoTouch 编译的逻辑组件。然后 Objective-C 团队引用这个组件。那可能吗?我已经阅读了大量有关 MonoTouch 引用 C 程序集的文章,但它可以反过来工作吗?

如果可能的话,如果有任何尝试这种方法的经验,那就太棒了!

谢谢 亚伦

最佳答案

虽然技术上可行,但目前还没有简单的方法。

目前您能做的最好的事情就是从 C# 启动应用程序,然后,如果您愿意,可以将控制权转移到您的 Objective-C 代码。在 C# 启动期间,您可以使用 P/Invoke 注册由 Objective-C 代码回调的方法,以调用如下内容:

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);
 }

关于ios - iOS XCode 应用程序可以引用 MonoTouch 程序集吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5256080/

相关文章:

ios - Xcode 7.3.1 UITests 代码覆盖率始终为 0%

iphone - 创建没有导航栏按钮的弹出菜单

c# - GPUImage 和 Monotouch 绑定(bind)或替代方案

ios - MonoTouch,在 UIImageView 上绘制裁剪区域层

ios - 两次初始化 NSString 对象是否有任何隐藏的副作用

ios - 使用 Xcode 7 禁用项目和 cocoapods 依赖项的位码?

iphone - UIManagedDocument:网络中断时创建新文件时出错/崩溃(保存)

ios - 当 ScrollView 移动时,Xamarin UIScrollView GestureRecognizerShouldBegin 报告速度为 0

c# - JSQMessagesViewController 找不到 heightForCellTopLabelAtIndexPath

c# - Monotouch - 访问应用程序级别变量 (CS0120)