11

重複の可能性:
非公開のプロトコルに準拠

私のクラスは、作成したNSXMLParserオブジェクトへのデリゲートとして自分自身を登録しようとします。ただし、NSXMLParserオブジェクトはクラス内からのみ使用されるプライベート変数であるため、クラスがNSXMLParserDelegateプロトコルを実装していることをクラスに公開したくないと思います。

私はプロトコルの開示を避ける権利がありますか?もしそうなら、クラスがそうすることを公表せずにプロトコルを実装するにはどうすればよいですか?

4

1 に答える 1

16

これを .m ファイルに入れてみてください:

@interface MyClass (Private) <NSXMLParser>
@end

特定のカテゴリ名 ( Private) は問題ではありません。実際には空の括弧セットを使用できます (以下を参照)。ただし、これには、必要なメソッドを実装し、クラスがプロトコルを実装していることをコンパイラに伝える必要があると思います少なくともそのファイルでは。

それでもうまくいかない場合は、パーサーのデリゲートを設定するときに、単に<NSXMLParser>.h ファイルから削除し、必要に応じてキャストselfしてみてください。id<NSXMLParser>

于 2012-12-19T06:26:36.243 に答える