2

我有一个具有以下绑定的蓝牙 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 连接生成的事件处理程序时,它会立即使应用程序崩溃,并且我没有收到任何可能出错的反馈。我仍然是绑定的新手,所以...

我有一种感觉,我在“事件 = ...”部分犯了错误,有什么想法吗?

谢谢,

罗吉尔

4

1 回答 1

2

很难说没有更多细节(例如,符号化的崩溃日志),但您的部分绑定是倒置的(这可能导致无限递归,从而使您的应用程序崩溃)。

  • 你的Delegate方法应该有[Wrap]属性 (on WeakDelegate); 和
  • 您的WeakDelegate方法应该是选择器上具有[Export]属性的方法delegate

例如

    [Wrap ("WeakDelegate")]
    StronglyTypedDelegate Delegate { get; set; }

    [Export ("delegate")][NullAllowed]
    NSObject WeakDelegate { get; set; }
于 2013-01-13T23:17:50.733 回答