3

Objective-C アプリケーションのMonoTouchバインディングに取り組んでいます。iOS Binding Walkthroughを参考にしました。

i386、ARM、そしてユニバーサル ライブラリのライブラリを生成しました。さらに、MonoTouch Binding Project を作成しました。Sharpie を使用して ApiDefinition を生成し、以前に生成したユニバーサル ライブラリを追加しました。このプロジェクトをビルドすると、次のエラーが発生します。

ADClusterAnnotation.g.cs(86,86): エラー CS0533:
AnnotationClusterMap.ADClusterAnnotation.Coordinate' は、継承された抽象メンバー MonoTouch.MapKit.MKAnnotation.Coordinate' を非表示にします (CS0533)

以下は、ADClusterAnnotation のコード スニペットです。

ファイル ADClusterannotation.h

@interface ADClusterAnnotation : NSObject <MKAnnotation> {
    CLLocationCoordinate2D  _coordinates;   
}
@property (nonatomic) CLLocationCoordinate2D coordinate;
@end

ファイル ADClusterAnnotation.m

@synthesize coordinate = _coordinates;

ApiDefinition のコード スニペットを次に示します。

[BaseType (typeof (MKAnnotation))]
public partial interface ADClusterAnnotation {
    [Export ("coordinate")]
    CLLocationCoordinate2D Coordinate { get; set; }
}

したがって、ApiDefinition で何かを変更する必要があると思います。API定義のADClusterAnnotationからCoordinateを外してみましたが、abstractメンバーを実装しているというエラーが出てしまいます。Monotouch バインディングに関して何が欠けていますか?

4

1 に答える 1

2

抽象メンバーのrequirec# newまたはオーバーライドoverride

ApiDefinition を次のように変更することで、それを生成できます。

[BaseType (typeof (MKAnnotation))]
public partial interface ADClusterAnnotation {
    [Export ("coordinate")]
    [New]
    CLLocationCoordinate2D Coordinate { get; set; }
}
于 2013-08-03T06:20:58.587 に答える