5

这是我上一个关于将objective-c库绑定到xamarin项目的问题的后续。所以我想我会自己创建 api 定义,但我不知道如何将 Objective-C 委托重写为 C# 委托/事件。我已经了解到,objective-c 委托与 C# 委托不同,而更像 C# 事件。

这是objective-c委托定义(来自头文件):

@protocol LineaDelegate
@optional

-(void)connectionState:(int)state;

@end

这是objective-c类定义(来自头文件):

@interface Linea : NSObject

-(void)connect;

@end

connect 方法在后台工作,并将通过 connectionState 委托通知调用者连接成功。

现在,如何正确绑定 api?到目前为止,这是我的 ApiDefinition.cs:

[BaseType(typeof(NSObject))]
interface Linea{
     [Export ("isPresent")]
     bool IsPresent();

     //the delegate that will be notified of Linea events
     [Export("addDelegate:")]
     void AddDelegate (NSObject newDelegate);

     [Export("connect")]
     void Connect ();
}

如何将 Objective-c 委托转换为 Xamarin Studio 和 C# 中有用的东西?

4

2 回答 2

4

现在,当我在这里发布问题的那一刻,我自己找出了解决方案......我在这里发布解决方案不仅是为了我自己的参考,也为了其他会遇到同样问题的人。

我找到了这个教程(参见第 4.3 章),并认为我必须使用弱委托。像魅力一样工作!

于 2013-08-21T11:22:59.773 回答
2

您似乎正在尝试绑定 LineaSDK,幸运的是,完整的绑定已经可用:

https://github.com/mono/monotouch-bindings/tree/master/LineaPRO

于 2013-08-21T17:37:27.633 回答