私下实施协议?

时间:2012-12-19 06:13:34

标签: objective-c cocoa-touch

  

可能重复:
  Conforming protocol privately

我的一类尝试将自己注册为它创建的NSXMLParser对象的委托。但是,我不认为我希望我的类公开披露它实现NSXMLParserDelegate协议,因为NSXMLParser对象是仅在类中使用的私有变量。

我是否有权避免公开协议,如果是这样,我如何实施协议而不公开该类协议?

1 个答案:

答案 0 :(得分:14)

尝试将其放入.m文件中:

@interface MyClass (Private) <NSXMLParser>
@end

特定的类别名称(Private)无关紧要 - 实际上你可以使用一组空的括号(见下文) - 但我认为这应该要求你实现所需的方法并告诉编译器你的类实现了协议,至少在那个文件中。

如果这不起作用,请尝试从.h文件中删除<NSXMLParser>,并在设置解析器的委托时根据需要将self投射到id<NSXMLParser>