2010-03-06 139 views
1

我想寫類似這樣的東西(如果樣品是不是100%正確對不起,我只是註銷了我的頭頂部):Objective-C協議/接口?

interface Handler 
{ 
    void doSomething (); 
} 

otherclass 
{ 
    void othermethod (Handler handler) 
    { 
     // Handler do something 
    } 
} 

所以在我的ObjectiveC作了如下:

@protocol Handler 
- (void) doSomething; 
@end 

// Other class 
- (void) othermethod: (Handler*) handler 
{ 
    // Do something 
} 

但是我在其他方法聲明行上得到以下錯誤: 預期的')'在hander之前。

我知道這裏沒有語法錯誤(我可以用NSObject代替Handler *並且錯誤消失),所以顯然我在這種情況下使用的協議是不正確的。

任何人都可以指出我創建一個類似C#的界面的正確方法嗎?

回答

9

您想使用一個類型是這樣的:

id <Handler> obj 

這意味着「的任何對象(類型id)實現該Handler協議」。該協議介於大於/小於符號之間。您也可以使用像NSObject <Handler> *obj這樣的聲明,意思是「任何類型爲NSObject的對象或實現Handler協議的子類」。

您也可以聲明,實現多種協議,像這樣的對象:

id <Handler, OtherHandler> obj 
+0

謝謝,那正是我需要的。 – Kyle 2010-03-06 15:59:24