代码之家  ›  专栏  ›  技术社区  ›  Kyle

目标C协议/接口?

  •  1
  • Kyle  · 技术社区  · 15 年前

    我正试图写类似的东西(抱歉,如果样本不是100%正确的,我只是在我的头上写了下来):

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

    因此,在客观性方面,我做了以下几点:

    @protocol Handler
    - (void) doSomething;
    @end
    
    // Other class
    - (void) othermethod: (Handler*) handler
    {
       // Do something
    }
    

    但我在OtherMethod声明行中得到以下错误: 应在处理程序之前输入')'。

    我知道这里没有语法错误(我可以用nsObject*替换handler*,错误就消失了),所以在这种情况下,显然我对协议的使用是不正确的。

    有人能给我指出创建C类接口的正确方法吗?

    1 回复  |  直到 15 年前
        1
  •  9
  •   mipadi    15 年前

    您要使用这样的类型:

    id <Handler> obj
    

    这意味着“任何对象(类型 id )实现了 Handler 协议”。协议介于大于/小于符号之间。您也可以使用类似的声明 NSObject <Handler> *obj ,表示“任何类型的对象” NSObject 或实现 处理程序 协议”。

    您还可以声明一个实现如下几种协议的对象:

    id <Handler, OtherHandler> obj