2010-03-06 142 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