我有一个本地库的协议,我试图为其编写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这应该有用......
有什么想法吗?
答案 0 :(得分:1)
你的
绑定- (void)brspModeChanged:(Brsp*)brsp BRSPMode:(BrspMode)mode;
缺少参数。尝试:
[Export("brspModeChanged:BRSPMode:"), EventArgs("Mode")]
void ModeChanged(Brsp brsp, BrspMode mode);