像UIScrollView这样,效率要高点
#UIScrollView.h
```struct {
unsigned scrollViewDidScroll : 1;
unsigned scrollViewWillBeginDragging : 1;
unsigned scrollViewDidEndDragging : 1;
unsigned viewForZoomingInScrollView : 1;
unsigned scrollViewWillBeginZooming : 1;
unsigned scrollViewDidEndZooming : 1;
unsigned scrollViewDidZoom : 1;
unsigned scrollViewDidEndScrollingAnimation : 1;
unsigned scrollViewWillBeginDecelerating : 1;
unsigned scrollViewDidEndDecelerating : 1;
} _delegateCan;
```
#UIScrollView.m
```
- (void)setDelegate:(id)newDelegate
{
_delegate = newDelegate;
_delegateCan.scrollViewDidScroll = [_delegate respondsToSelector:@selector(scrollViewDidScroll:)];
_delegateCan.scrollViewWillBeginDragging = [_delegate respondsToSelector:@selector(scrollViewWillBeginDragging:)];
_delegateCan.scrollViewDidEndDragging = [_delegate respondsToSelector:@selector(scrollViewDidEndDragging:willDecelerate:)];
_delegateCan.viewForZoomingInScrollView = [_delegate respondsToSelector:@selector(viewForZoomingInScrollView:)];
_delegateCan.scrollViewWillBeginZooming = [_delegate respondsToSelector:@selector(scrollViewWillBeginZooming:withView:)];
_delegateCan.scrollViewDidEndZooming = [_delegate respondsToSelector:@selector(scrollViewDidEndZooming:withView:atScale:)];
_delegateCan.scrollViewDidZoom = [_delegate respondsToSelector:@selector(scrollViewDidZoom:)];
_delegateCan.scrollViewDidEndScrollingAnimation = [_delegate respondsToSelector:@selector(scrollViewDidEndScrollingAnimation:)];
_delegateCan.scrollViewWillBeginDecelerating = [_delegate respondsToSelector:@selector(scrollViewWillBeginDecelerating:)];
_delegateCan.scrollViewDidEndDecelerating = [_delegate respondsToSelector:@selector(scrollViewDidEndDecelerating:)];
}
```