0

我有一个本地库的以下协议,我正在尝试为其编写 MonoTouch 绑定(它还有一个名为 Brsp 的接口部分)。

@protocol BrspDelegate <NSObject>
@required
- (void)brsp:(Brsp*)brsp OpenStatusChanged:(BOOL)isOpen;
- (void)brsp:(Brsp*)brsp SendingStatusChanged:(BOOL)isSending;
@optional
- (void)brspDataReceived:(Brsp*)brsp;
- (void)brsp:(Brsp*)brsp ErrorReceived:(NSError*)error;
- (void)brspModeChanged:(Brsp*)brsp BRSPMode:(BrspMode)mode;
@end

MonoTouch 绑定:

[BaseType(typeof(NSObject))]
[Model]
interface BrspDelegate 
{
    [Abstract]
    [Export("brsp:OpenStatusChanged:"), EventArgs("OpenStatus")]
    void OpenStatusChanged(Brsp brsp, bool isOpen);

    [Abstract]
    [Export("brsp:SendingStatusChanged:"), EventArgs("SendingStatus")]
    void SendingStatusChanged(Brsp brsp, bool isSending);

    [Export("brspDataReceived:")]
    void DataReceived(Brsp brsp);

    [Export("brsp:ErrorReceived:"), EventArgs("Error")]
    void ErrorReceived(Brsp brsp, NSError error);

    [Export("brspModeChanged:"), EventArgs("Mode")]
    void ModeChanged(Brsp brsp, BrspMode mode);
}

正在调用打开状态,发送状态和错误接收方法,但模式更改不起作用。因此,在 Brsp 类中直接引用了 Delegate,因此该部分应该可以工作。在某一时刻,我得到了 modechanged 也可以工作,所以我知道当我在 Brsp 类上调用“changeMode”时会调用它。但是后来我把它搞砸了,现在它不再起作用了......

另外,现在我使用的是 Delegate 私有类,而不是基于事件的方法。因为当我尝试为上述方法之一连接生成的事件时,应用程序崩溃而没有来自 MonoTouch 的任何错误或警告。

我怀疑绑定不是 100% 正确的,所以这些方法没有正确地粘合在一起,但是我尝试了很多很多不同的东西,AFAIK 这应该可以工作......

有任何想法吗?

4

1 回答 1

1

您的绑定

- (void)brspModeChanged:(Brsp*)brsp BRSPMode:(BrspMode)mode;

缺少一个参数。尝试:

[Export("brspModeChanged:BRSPMode:"), EventArgs("Mode")]
void ModeChanged(Brsp brsp, BrspMode mode);
于 2013-01-07T16:17:43.363 回答