Проверка, был ли реализован дополнительный метод протокола - PullRequest
53 голосов
/ 04 февраля 2009

Кто-нибудь знает лучший способ проверить, был ли реализован дополнительный метод протокола.

Я пробовал это:

if ([self.delegate respondsToSelector:@selector(optionalProtocolMethod:)] )

где делегат:

id<MyProtocol> delegate;

Однако я получаю сообщение о том, что функция respondsToSelector: не найдена в протоколе!

Ответы [ 2 ]

99 голосов
/ 04 февраля 2009

respondsToSelector: является частью протокола NSObject. В том числе NSObject в MyProtocol должно решить вашу проблему:

@protocol MyProtocol <NSObject>

@optional
-(void)optionalProtocolMethod:(id)anObject;

@end
3 голосов
/ 10 мая 2015

Я применяю следующий рецепт:

if(self.delegate && [self.delegate respondsToSelector:@selector(closed)]){
    [self.delegate closed];
}

Где 'closed' - это метод, который я хотел вызвать.

...