协议方法自我引用

时间:2011-07-08 12:49:32

标签: objective-c interface protocols

在我的iOS项目中,我创建了一个名为“XMLElement”的协议,我对这个协议的方法有一个问题,它必须返回我的协议实例:

@protocol XMLElement <NSObject>
-(XMLElement *) GetParent;
@end

方法 GetParent 返回父元素,即XMLElement协议实现。

但这不能编译!

我必须要返回 id 对象吗?别无他法?

2 个答案:

答案 0 :(得分:2)

XMLElement是一个协议,所以你需要

@protocol XMLElement <NSObject>
-(id <XMLElement>) GetParent;
@end

与问题无关:方法名称以大写字母开头是不典型的。它应该是getParent而不是GetParent

答案 1 :(得分:1)

协议不是它自己的类型,所以你需要写:

- (id<XMLElement>) getParent;

(我建议你坚持约定并用小写字母开始方法)