我有以下协议到本机库,我试图为其编写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);
}
正在调用打开状态、发送状态和错误接收方法,但模式更改不起作用。Delegate在Brsp类中被引用,那部分应该能工作。在某一点上,我使模型也工作了,所以我知道当我在Brsp类上调用"changeMode"时调用了它。但是后来我把它搞砸了,现在它不再工作了…
另外,现在我正在使用Delegate私有类,而不是基于事件的方法。因为当我尝试为上面的一个方法连接生成的事件时,应用程序崩溃了,没有任何错误或来自MonoTouch的警告。
我怀疑某些东西不是100%正确的绑定,所以方法不是粘在一起正确,但我已经尝试了很多,很多不同的东西和AFAIK这应该工作…
任何想法?
- (void)brspModeChanged:(Brsp*)brsp BRSPMode:(BrspMode)mode;
缺少一个参数。试一试:
[Export("brspModeChanged:BRSPMode:"), EventArgs("Mode")]
void ModeChanged(Brsp brsp, BrspMode mode);