【问题标题】:Objective-C protocols/interface?Objective-C 协议/接口?
【发布时间】:2010-03-06 15:42:44
【问题描述】:

我正在尝试写一些类似的东西(对不起,如果样本不是 100% 正确,我只是在我的头上写下):

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
}

但我在 othermethod 声明行收到以下错误: 处理程序之前应为 ')'。

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

谁能指出创建类似 C# 的界面的正确方法?

【问题讨论】:

    标签: objective-c interface protocols


    【解决方案1】:

    你想使用这样的类型:

    id <Handler> obj
    

    这意味着“任何实现Handler 协议的对象(类型id)”。该协议介于大于/小于符号之间。您还可以使用类似NSObject &lt;Handler&gt; *obj 的声明,这意味着“任何NSObject 类型的对象或实现Handler 协议的子类”。

    您还可以声明一个实现多个协议的对象,如下所示:

    id <Handler, OtherHandler> obj
    

    【讨论】:

    • 谢谢,这正是我需要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多