2017-05-02 16 views
3

我有一個IOS代碼具有此id<UIGestureRecognizerDelegate> gestureDelegate;IOS到C#什麼是等價的id <>

我怎麼能在C#重寫這個C#重寫?

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

其實我宣佈它像UIGestureRecognizerDelegate gestureDelegate;但是是不是正確? 如果我理解正確,id就像是C#中的var? 如果這是我怎麼能聲明它爲類參數?

+0

是的,它是等價的。 – KKRocks

+0

@property是否意味着是一個靜態參數? – Leze

+0

屬性聲明,因爲我們希望這個變量在類之外。是的,它關鍵字爲目標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#中沒有任何意義,因爲它使用* garbage collection *來管理內存(而不是引用計數系統就像Objective-C一樣)。 –

相關問題