2

次のバインディングを持つBluetoothBLEデバイスのバインディングがあります。

[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に対して生成されたイベントハンドラーを接続すると、アプリが即座にクラッシュし、何が間違っている可能性があるかについてのフィードバックがまったく得られません。私はまだバインディングの初心者なので...

どういうわけか「イベント=…」の部分を間違えたような気がしますが、何かアイデアはありますか?

ありがとう、

Rogier

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 に答える