MonoTouch自定义绑定不适用于Delegate中的某些方法

时间:2013-01-05 19:49:25

标签: binding xamarin.ios

我有一个本地库的协议,我试图为其编写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这应该有用......

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你的

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

缺少参数。尝试:

[Export("brspModeChanged:BRSPMode:"), EventArgs("Mode")]
void ModeChanged(Brsp brsp, BrspMode mode);
相关问题