Если метод в протоколе помечен как необязательный, вы должны проверить, реализует ли объект этот метод, прежде чем пытаться вызвать его.
Например, представление круговой диаграммы может проверить метод заголовка сегмента, например:
NSString *thisSegmentTitle;
if ([self.dataSource respondsToSelector:@selector(titleForSegmentAtIndex:)]) {
thisSegmentTitle = [self.dataSource titleForSegmentAtIndex:index];
}
RespondsToSelector: метод использует селектор, который ссылается на идентификатор метода после компиляции. Вы можете предоставить правильный идентификатор, используя директиву @selector () и указав имя метода.
Если источник данных в этом примере реализует метод, используется заголовок; в противном случае заголовок остается нулевым.