2017-05-02 5 views
3

は、私は私がC#でこれを書き換えることができますどのようにこのid<UIGestureRecognizerDelegate> gestureDelegate;IDと同等であるC#ものにIOS <>

を持つC#で書き直すためにIOSコードを得ましたか。

@property (weak, nonatomic) id<UIGestureRecognizerDelegate> gestureDelegate; 

実際にはUIGestureRecognizerDelegate gestureDelegate;のように宣言しますが、それは正しいですか? 私がそれを正しく理解すれば、idvarのようなものですか? これでクラスパラメータとして宣言できますか?

+0

はい、それは同じです。 – KKRocks

+0

@propertyは静的なパラメータであることを意味しますか? – Leze

+0

この変数をクラスsoの外側にしたいので、プロパティが宣言されています。はい、それは目標Cのプロパティを定義するためのキーワードです。 – KKRocks

答えて

4

C#interfaceは、Objective-Cでようなものである、id<UIGestureRecognizerDelegate>オブジェクトがUIGestureRecognizerDelegateで定義されたメソッドを実装します。だから、C#で同じことが(IDEでテストしていない主なアイデア、)次のようになります。

interface UIGestureRecognizerDelegate { 
    public bool gestureRecognizerShouldBegin(UIGestureRecognizer gestureRecognizer); 
} 

class Example { 
    public UIGestureRecognizerDelegate gestureDelegate; //the equivalent 
} 

およびインターフェースに準拠したクラス:

public class ExampleViewController:UIViewController,UIGestureRecognizerDelegate { 
    var example = Example(); 

    public ExampleViewController() { 
     this.example.gestureDelegate = this; 
    } 

    //implements the methods of interface UIGestureRecognizerDelegate 
    public bool gestureRecognizerShouldBegin(UIGestureRecognizer gestureRecognizer) { 
     //...... 
    } 
} 
+0

編集をありがとう、それは今明らかになりました。 – Leze

+0

はい、あなたは正しいです。あなたは1つのクラスと多くのインターフェイスから継承することができます。私はあなたの情報の答えを更新しました。 –

+0

えええええええええええええええええええええたまえ:)。完全性のために、オリジナルのObjective-Cプロパティ宣言の中の 'weak'修飾子はメモリを管理する*ガベージコレクション*を使用しているのでC#では意味をなさないObjective-Cのように)。 –

関連する問題