Синтаксис объявления класса Objective C

Мне нужна помощь в понимании синтаксиса объявления класса в Objective C, или, чтобы быть более конкретным

@interface SomeViewController : UITableViewController <UITableViewDataSource, UITableViewDelegate>

что означает UITableViewDataSource,UITableViewDelegate

Насколько я понимаю, он получает эти два объекта, когда создается экземпляр класса. Исправьте меня, если я ошибаюсь..

3 ответа

Решение

Когда вы объявляете класс, синтаксис <> позволяет вам указать список протоколов, которым должен соответствовать класс.

Протокол - это "набор" методов, которые ваш класс должен реализовать (вы также можете указать дополнительные методы). У них есть только объявления методов, но программист должен реализовать их в своих классах. Протоколы действительно важны в Objective-C, поскольку они являются сердцем модели делегирования.

В этом конкретном случае UITableViewDelegate - это протокол, которому должен соответствовать объект, который имеет дело с UITableViews. Делегаты табличного представления отвечают за управление таблицей и ее ячейками, такими как установка их высоты, аксессуаров и т. Д.

UItableViewDataSource - это протокол, которому должен соответствовать объект, который передает данные в табличное представление. Объект, соответствующий этому протоколу, отвечает за возврат данных, которые будут отображаться в табличном представлении.

Неиспользование протоколов при необходимости может создать предупреждения, которые рано или поздно приведут к сбою вашего приложения.

UITableViewDataSource а также UITableViewDelegate два протокола, а не классы (или объекты).

Когда вы объявляете класс, вы можете указать любое количество протоколов, которые ваш класс реализует, используя < > Синтаксис скобок.

Протокол - это список обязательных или необязательных методов. Добавление протокола к объявлению класса фактически не реализует и не объявляет какие-либо методы в этом протоколе. Вы должны сделать это самостоятельно. Однако, если вы не реализуете требуемый метод протокола, вы получите предупреждение компилятора.

UITableViewDataSource и UITableViewDelegate являются протоколами. Чтобы понять, что это за протокол, посмотрите это. Протоколы похожи на интерфейс в Java.

@interface SomeViewController : UITableViewController <UITableViewDataSource, UITableViewDelegate>

Эта строка просто означает, что вы объявляете класс "SomeViewController", который наследуется от "UITableViewController" и принимает два протокола: UITableViewDataSource и UITableViewDelegate.

Другие вопросы по тегам