これは、 objective-c ライブラリを xamarin プロジェクトにバインドすることに関する前回の質問のフォローアップです。だから私は自分でAPI定義を作成することを考えましたが、目的のcデリゲートをC#デリゲート/イベントに書き換える方法がわかりません。Objective-C のデリゲートは C# のデリゲートと同じではなく、C# のイベントに似ていることがわかりました。
これは、目的の c デリゲートの定義です (ヘッダー ファイルから)。
@protocol LineaDelegate
@optional
-(void)connectionState:(int)state;
@end
これは (ヘッダー ファイルからの) Objective-C クラス定義です。
@interface Linea : NSObject
-(void)connect;
@end
connect メソッドはバックグラウンドで動作し、connectionState デリゲートを介して呼び出し元に接続の成功を通知します。
さて、どうすればAPIを正しくバインドできますか? これまでのところ、これは私の ApiDefinition.cs です。
[BaseType(typeof(NSObject))]
interface Linea{
[Export ("isPresent")]
bool IsPresent();
//the delegate that will be notified of Linea events
[Export("addDelegate:")]
void AddDelegate (NSObject newDelegate);
[Export("connect")]
void Connect ();
}
Objective-C デリゲートを Xamarin スタジオと C# で役立つものに変換するにはどうすればよいですか?