Цель-C: Как просмотреть протокол? - PullRequest
0 голосов
/ 25 июля 2011

Для каждого объекта, который может иметь делегата, существует соответствующий протокол, который объявляет сообщения, которые объект может отправить своим делегатам. Делегат реализует методы из протокола для интересующих его событий.

Как можно просмотреть протокол, чтобы выяснить, какие функции необходимо реализовать?

Ответы [ 3 ]

2 голосов
/ 25 июля 2011

Протоколы в 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, вы можете щелкнуть опцию в своем коде, чтобы вызвать панель быстрой документации, которая имеет опциюперейдите к полной документации для класса объекта, на котором вы щелкнули.

2 голосов
/ 25 июля 2011

Вы можете либо просмотреть документацию, либо просмотреть соответствующий файл заголовка, щелкнув Command по протоколу в Xcode (Command-doubleclick в Xcode 3).

0 голосов
/ 25 июля 2011

Проверьте в документе свойство delegate, оно почти все время определено как тип id и какому протоколу он соответствует: id <TheProtocolYouLookFor>.
Если нет, прочитайте описание, и вынайти больше информации о протоколе.Имена протоколов также являются ссылками в целом.

...