2012-12-19 17 views
10

Mögliche Duplizieren:
Conforming protocol privatelyEin Protokoll privat implementieren?

Eine Klasse von mir versucht, sich als Delegierter zu einem NSXMLParser Objekt zu registrieren, die es erstellt. Allerdings möchte ich meiner Klasse nicht öffentlich mitteilen, dass sie das NSXMLParserDelegate-Protokoll implementiert, da dieses NSXMLParser-Objekt eine private Variable ist, die nur innerhalb der Klasse verwendet wird.

Habe ich Recht, das Protokoll nicht zu offenbaren, und wenn ja, wie implementiere ich das Protokoll, ohne es öffentlich zu machen, dass die Klasse das tut?

Antwort

14

Versuchen setzen diese in .m-Datei:

@interface MyClass (Private) <NSXMLParser> 
@end 

Die spezifischen Kategorienamen (Private) spielt keine Rolle - in der Tat Du eine leeres Klammern verwenden kann (siehe unten) - aber ich denke, Dies erfordert, dass Sie die erforderlichen Methoden implementieren und dem Compiler mitteilen, dass Ihre Klasse das Protokoll zumindest in dieser Datei implementiert.

Wenn das nicht funktionieren versuchen Entfernen einfach <NSXMLParser> aus Ihrer .h-Datei, und self-id<NSXMLParser> ggf. Gießen, wenn die Delegierten Parser Einstellung.

+0

Nachdem ich diesen Beitrag gemacht hatte, bemerkte ich in der "Related", dass jemand anderes bereits eine Lösung gefunden hatte. Sie schlagen vor, eine anonyme Kategorie in der .m-Datei zu erstellen. '@interface MyClass() '. Wenn Sie "Privat" entfernen oder erwähnen, dass eine anonyme Kategorie funktioniert, akzeptiere ich Ihren Beitrag als Antwort. :) +1 für die Idee von "ID " unabhängig :) –

+0

Ich habe eine Notiz hinzugefügt. Warum nicht einen Link zu dieser Antwort veröffentlichen? – paulmelnikow

+0

http://stackoverflow.com/questions/3813316/conforming-protocol-privately?rq=1 Ich frage mich, ob ich meinen Beitrag als ein Duplikat markieren sollte. Ich weiß nicht, wie ich das machen soll. –

Verwandte Themen