Запуск методов протокола из другого класса - Objective-C
У меня есть три разных класса, один из которых анализирует xml с определенного веб-сайта, а два других будут получать информацию из класса, который выполняет методы протокола NSXMLParserDelegate. У меня вопрос, как я могу сказать классу для запуска методов протокола из другого класса? Или запустите каждый метод экземпляра или весь класс или что-то в этом роде.
Какие-либо предложения?
Изменить: я собираюсь проанализировать информацию XML с веб-сайта, когда какой-то определенный вид активен. Для этого у меня будет класс, которому я собираюсь отправить сообщение, и сказать ему, чтобы он запускал свои методы из протокола синтаксического анализатора xml и отправлял полученное значение представлению, которое присутствует.
1 ответ
Есть два способа увидеть это.
Объект (A), имеющий указатель на делегат (B) (делегат - это объект, который реализует методы протокола), может вызывать методы протокола, просто вызывая их. С точки зрения делегата (B), вы не вызываете методы протокола, вы ИСПОЛЬЗУЕТЕ их, и какой-то другой объект (A) будет вызывать их всякий раз, когда ему нужно сообщить вам о каком-либо событии или запросить некоторую информацию. Вот для чего предназначены протоколы.
Объект (A) где-то объявляет делегата
id <someKindOfDelegate> delegate;
и всякий раз, когда он хочет, он вызывает методы протокола
if (self.delegate)
[self.delegate someMethod]
(B) должен объявить себя в качестве разработчика протокола
@interface ObjectB <someKindOfDelegate>
тогда (B) устанавливает себя как делегат экземпляра (A)
ObjectA *object = [[ObjectA alloc] init];
object.delegate = self;
и наконец (B) реализует методы протокола
- (void)someMethod {
// do something... I've been called!
}