我有一个本地库的以下协议,我正在尝试为其编写 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 这应该可以工作......
有任何想法吗?