Objective c 私下执行协议?

Objective c 私下执行协议?,objective-c,cocoa-touch,Objective C,Cocoa Touch,可能重复: 我的一个类试图将自己注册为它创建的NSXMLParser对象的委托。但是,我不想让我的类公开披露它实现了NSXMLParserDelegate协议,因为NSXMLParser对象是一个私有变量,只能从类内部使用 我避免披露协议对吗?如果是这样,我如何实现协议而不公开该类是这样做的?尝试将其放入.m文件中: @interface MyClass (Private) <NSXMLParser> @end @接口MyClass(专用) @结束 具体的类别名称(Privat

可能重复:

我的一个类试图将自己注册为它创建的NSXMLParser对象的委托。但是,我不想让我的类公开披露它实现了NSXMLParserDelegate协议,因为NSXMLParser对象是一个私有变量,只能从类内部使用


我避免披露协议对吗?如果是这样,我如何实现协议而不公开该类是这样做的?

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

@interface MyClass (Private) <NSXMLParser>
@end
@接口MyClass(专用)
@结束
具体的类别名称(
Private
)并不重要——事实上,您可以使用一组空括号(见下文)——但我认为这应该要求您实现所需的方法,并告诉编译器您的类实现了协议,至少在该文件中是这样的


如果这不起作用,请尝试简单地从.h文件中删除
,并在设置解析器的委托时,如有必要,将
self
强制转换为
id

发表本文后,我在“相关”中注意到其他人已经找到了解决方案。他们建议在.m文件中创建一个匿名类别<代码>@interface MyClass()。如果您删除了
私有
,或者提到匿名分类有效,我将接受您的帖子作为答案。:)+1对于
id
的想法,我添加了一个注释。为什么不贴一个链接到这个答案呢?我想知道我是否应该把我的帖子标为副本。我不知道怎么做。