вівторок, 25 лютого 2014 р.

Objective-C протоколы. Часть 1

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

Формальные протоколы


Объявление формального протокола гарантирует, что все методы объявленные протоколом будут реализованы классом. Простейшее описание протокола:
@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.

Немає коментарів:

Дописати коментар

HyperComments for Blogger

comments powered by HyperComments