Частное внедрение протокола?

Возможный дубликат:
Конфиденциальный протокол

Мой класс пытается зарекомендовать себя как делегат к объекту NSXMLParser, который он создает. Тем не менее, я не думаю, что хочу, чтобы мой класс публично раскрывал, что он реализует протокол NSXMLParserDelegate, поскольку этот объект NSXMLParser является частной переменной, используемой только внутри класса.

Я прав, чтобы не раскрывать протокол, и если да, то каким образом я могу реализовать протокол, не делая его общедоступным, что класс делает это?

Ответ 1

Попробуйте поместить это в свой .m файл:

@interface MyClass (Private) <NSXMLParser>
@end

Определенное имя категории (Private) не имеет значения - на самом деле вы можете использовать пустой набор круглых скобок (см. ниже) - но я думаю, что это должно потребовать от вас реализовать необходимые методы и сообщить компилятору, что ваш класс реализует протокол, по крайней мере в этом файле.

Если это не сработает, попробуйте просто удалить <NSXMLParser> из вашего .h файла и при необходимости направить self в id<NSXMLParser> при настройке делегата парсера.