Протоколы описывают методы, которые могут быть реализованы каким-либо классом. Цели для которых используются протоколы:
- Ожидание, что класс поддерживающий протокол выполнит описанные в протоколе функции;
- Поддержка протокола на уровне объекта, не раскрывая методы и реализацию самого класса;
- В виду отсутствия множественного наследования - объединить общие черты нескольких классов.
Формальные протоколы
Объявление формального протокола гарантирует, что все методы объявленные протоколом будут реализованы классом. Простейшее описание протокола:
@protocol ProtocolName method declarations @endЗа словом @protocol следует перечисление методов, также как и в обычном объявлении методов класса. Протокол может быть унаследован от произвольного количества других протоколов:
@protocol MyProtocol <Protocol1, Protocol2, Serializable, Drawable>
Добавление поддержки протокола к классу
Чтобы указать классу о поддержке определенного протокола необходимо включить заголовочный файл протокола в файл описания класса, и после в <скобках, через запятую>перечислить протоколы:#import "ProtocolName.h" @interface MyClass : SuperClass <ProtocolName> описание класса @endВ файле реализации класса необходимо реализовать все методы которые описывает протокол! Но - в Objective-C 2.0 добавлены еще два новых модификатора @optional и @required:
@protocol Asdfg - (void)readMy; @optional - (void)saveReadMy; - (NSString *)loadReadMy; @required - (NSInteger)countReadMy; @endДанный протокол показывает, что протокол Asdfg дожен реализовать методы readMy и countReadMy, а методы saveReadMy и loadReadMy необязательны к реализации.
Более подробно о протоколах и их применению будет в следующей статье. Одно из применений протоколов можно посмотреть на примере табличных представлений NSTableView.
Немає коментарів:
Дописати коментар