Протоколы iOS и делегаты. Основные вопросы - PullRequest
1 голос
/ 04 января 2011

Я создаю приложение с UITableView.

Данные будут поступать из XML, извлеченного по сети.Я использую NSXMLParser для этого, и он работает.Я использовал свой контроллер tableView в качестве делегата для этого, так что он реализует протокол для него:

@protocol NSXMLParserDelegate;
@interface MainView : UITableViewController <NSXMLParserDelegate>

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

UITableViewDataSource

и

UITableViewDelegate

, оба из которых являются протоколами.

Как бы я поступил так же в одном классе?я могу реализовать более одного протокола с тем же классом?я должен перенести делегирование парсера на другой объект и использовать этот контроллер для этой цели?

По сути, вопрос в том, как лучше всего это сделать?

спасибо

1 Ответ

2 голосов
/ 05 января 2011

Конечно, вы можете реализовать столько классов в классе, сколько захотите:

@interface MainView : UITableViewController <NSXMLParserDelegate, UITableViewDataSource, UITableViewDelegate>

Это «правильный» способ сделать это?Я не думаю, что есть «правильный» ответ на это.Пурист может сказать нет.Я бы сказал, делай это там, где есть смысл, но ошибайся в том, чтобы разбить его на отдельные классы.Например, если ваш контроллер представления представляет собой простое меню, то для вашего контроллера представления будет иметь смысл также быть вашим представителем представления таблицы и источником данных;нет смысла разбивать его на несколько классов.

Если вам нужно разобрать XML, моя интуиция предполагает, что он начинает становиться немного сложнее.Может быть, есть класс данных, который реализует источник данных, анализатор XML и класс контроллера?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...