Протоколы в Objective-C не являются необходимыми, но они полезны;Протоколы обычно объявляются в файлах заголовков (.h):
@protocol MyAwesomeProtocol
-(void)thisMethodIsRequired;
@optional
-(void)theseMethodsAreOptional;
@end
... и обычно используются в нескольких местах:
1: в объявлении переменной экземпляра:
@class Foo : Bar
{
id<MyAwesomeProtocol> someIvar;
}
@end
2: в объявлениях свойств:
@class Foo : Bar
{ }
@property (assign) id<MyAwesomeProtocol> someProperty;
@end
3: в коде (постарайтесь избежать этого, но это разрешено законом):
if(...)
{
[(id<MyAwesomeProtocol>)obj foo];
}
Если выиспользуя XCode, вы всегда можете щелкнуть командой по протоколу, который появляется в любом месте вашего кода, чтобы перейти к заголовку, где этот протокол определен.Это верно даже для протоколов Apple, поскольку заголовочные файлы не компилируются.Кроме того, документация, доступная через XCode, предоставляет дополнительное понимание того, какие методы требуются или являются необязательными.
Поскольку вы можете определить дополнительные методы протокола, вы всегда должны проверять, является ли ваш делегат -respondsToSelector: @selector (isThisMethodImplemented :), поскольку язык не делает этого для вас.
Кроме того, если вы используете XCode, вы можете щелкнуть опцию в своем коде, чтобы вызвать панель быстрой документации, которая имеет опциюперейдите к полной документации для класса объекта, на котором вы щелкнули.