Следуя примеру кода в ответе drvdijk , может возникнуть проблема, если есть вероятность, что delegate
может быть nil
при вызове метода делегата.
Возвращаемое значение сообщения, отправленного на nil
, равно nil
(он же 0.0
он же 0
он же NO
), поэтому, если delegate
равно nil
,
[delegate scrollView:self shouldScrollToPoint:to]
вернет NO
, что может быть нежелательным поведением в вашем случае. Сначала безопаснее проверить:
if (delegate != nil) {
shouldScroll = [delegate scrollView:self shouldScrollToPoint:to]
}
Кроме того, если вы не хотите видеть предупреждение компилятора при отправке сообщений, объявленных NSObject
вашему делегату (например, respondsToSelector:
), включите протокол NSObject
в объявление протокола:
@protocol TScrollViewDelegate <NSObject>
- (BOOL) scrollView:(TCScrollView *)tcScrollView shouldScrollToPoint:(CGPoint)to;
@end