Синтаксис объявления класса 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.