我有蓝牙BLE设备的绑定,具有以下绑定:
[BaseType (typeof (CBPeripheralDelegate), Delegates=new string [] {"WeakDelegate"},
Events=new Type [] { typeof (BrspDelegate) })]
interface Brsp
{
//@property (nonatomic, weak) id <BrspDelegate> delegate;
[Export ("delegate")]
[NullAllowed]
BrspDelegate Delegate { get; set; }
[Wrap ("WeakDelegate")]
[NullAllowed]
NSObject WeakDelegate { get; set; }
...other stuff
}
以下代表:
[BaseType(typeof(NSObject))]
[Model]
interface BrspDelegate
{
[Abstract]
[Export("brsp:OpenStatusChanged:"), EventArgs("OpenStatus")]
...other stuff
}
当我为openstatuschanged连接一个生成的事件处理程序时,它立即崩溃了应用程序,我得不到任何反馈可能是错误的。我仍然是绑定的新手,所以......
我有种感觉我错误地使用了“Events = ...”部分,任何想法?
谢谢,
罗吉尔
答案 0 :(得分:2)
很难说没有更多细节(例如符号化的崩溃日志),但部分绑定被反转(这可能会导致无休止的递归,从而导致应用程序崩溃)。
Delegate
方法应具有[Wrap]
属性(在WeakDelegate
上);和WeakDelegate
方法应该是[Export]
选择器上具有delegate
属性的方法。E.g。
[Wrap ("WeakDelegate")]
StronglyTypedDelegate Delegate { get; set; }
[Export ("delegate")][NullAllowed]
NSObject WeakDelegate { get; set; }