Запуск методов протокола из другого класса - 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!
}
Другие вопросы по тегам