Проверка того, был ли реализован метод Факультативного протокола


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

Я попытался это:

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

где делегат:

id<MyProtocol> delegate;

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

2 53

2 ответа:

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

@protocol MyProtocol <NSObject>

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

@end

то, что я делаю, это применение следующего рецепта:

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

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