Протоколы описывают методы, которые могут быть реализованы каким-либо классом. Цели для которых используются протоколы:
- Ожидание, что класс поддерживающий протокол выполнит описанные в протоколе функции;
- Поддержка протокола на уровне объекта, не раскрывая методы и реализацию самого класса;
- В виду отсутствия множественного наследования - объединить общие черты нескольких классов.
Формальные протоколы
Объявление формального протокола гарантирует, что все методы объявленные протоколом будут реализованы классом. Простейшее описание протокола:
@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.
0 коментарі:
Отправить комментарий