私のクラスは、それが作成するNSXMLParserオブジェクトへのデリゲートとして自身を登録しようとします。しかし、NSXMLParserオブジェクトがクラス内からのみ使用されるプライベート変数であるため、NSXMLParserDelegateプロトコルを実装することをクラスに公開することは望ましくありません。
私はこのプロトコルの開示を避けることができます。もしそうなら、そのクラスがそうすることを公開せずにプロトコルを実装するにはどうすればいいですか?
私のクラスは、それが作成するNSXMLParserオブジェクトへのデリゲートとして自身を登録しようとします。しかし、NSXMLParserオブジェクトがクラス内からのみ使用されるプライベート変数であるため、NSXMLParserDelegateプロトコルを実装することをクラスに公開することは望ましくありません。
私はこのプロトコルの開示を避けることができます。もしそうなら、そのクラスがそうすることを公開せずにプロトコルを実装するにはどうすればいいですか?
あなたの.mファイルでこれを入れてみてください:
@interface MyClass (Private) <NSXMLParser>
@end
特定のカテゴリ名(Private
)は関係ありません - (下記参照)、実際にあなたは括弧の空のセットを使用することができます - しかし、私は思いますこれには、必要なメソッドを実装し、少なくともそのファイルでクラスがそのプロトコルを実装していることをコンパイラーに伝える必要があります。
これがうまくいかない場合は、.hファイルから<NSXMLParser>
を削除し、必要に応じてself
をid<NSXMLParser>
にキャストして、パーサーの代理人を設定してください。
この記事を作成した後、私は 'Related'に誰かが既に解決策を見つけたことに気づいた。彼らは.mファイルに匿名のカテゴリを作ることを提案しています。 '@interface MyClass()'。あなたが 'Private'を削除したり、匿名のカテゴリが動作すると言えば、私はあなたの投稿を答えとして受け入れます。 :) +1のアイデアは 'id 'に関係なく:) –
私はメモを付けました。なぜその答えへのリンクを投稿しないのですか? – paulmelnikow
http://stackoverflow.com/questions/3813316/conforming-protocol-privately?rq=1 私は自分の投稿を複製としてマークする必要があるのだろうかと思います。私はそれをする方法を知らない。 –