From e8ce7fcbb2ab6cc2c0b4825cd756dd7ee2a43103 Mon Sep 17 00:00:00 2001 From: Levi McCallum Date: Wed, 21 Oct 2015 23:14:54 -0700 Subject: [PATCH] Clean up caching of collection view delegate selectors on the inspector --- AsyncDisplayKit/ASCollectionView.mm | 2 +- .../Details/ASCollectionViewFlowLayoutInspector.h | 10 ++++++++-- .../Details/ASCollectionViewFlowLayoutInspector.m | 7 +++---- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/AsyncDisplayKit/ASCollectionView.mm b/AsyncDisplayKit/ASCollectionView.mm index 08f4b435..01b4927a 100644 --- a/AsyncDisplayKit/ASCollectionView.mm +++ b/AsyncDisplayKit/ASCollectionView.mm @@ -334,7 +334,7 @@ static BOOL _isInterceptedSelector(SEL sel) _asyncDelegateImplementsInsetSection = ([_asyncDelegate respondsToSelector:@selector(collectionView:layout:insetForSectionAtIndex:)] ? 1 : 0); } - [_flowLayoutInspector cacheSelectorsForCollectionView:self]; + [_layoutInspector didChangeCollectionViewDelegate:asyncDelegate]; } - (void)setCollectionViewLayout:(UICollectionViewLayout *)collectionViewLayout diff --git a/AsyncDisplayKit/Details/ASCollectionViewFlowLayoutInspector.h b/AsyncDisplayKit/Details/ASCollectionViewFlowLayoutInspector.h index 5aab03e0..179b8808 100644 --- a/AsyncDisplayKit/Details/ASCollectionViewFlowLayoutInspector.h +++ b/AsyncDisplayKit/Details/ASCollectionViewFlowLayoutInspector.h @@ -11,6 +11,7 @@ #import @class ASCollectionView; +@protocol ASCollectionViewDelegate; @protocol ASCollectionViewLayoutInspecting @@ -29,6 +30,13 @@ */ - (NSUInteger)collectionView:(ASCollectionView *)collectionView supplementaryNodesOfKind:(NSString *)kind inSection:(NSUInteger)section; +/** + * Allow the inspector to respond to delegate changes. + * + * @discussion A great time to update perform selector caches! + */ +- (void)didChangeCollectionViewDelegate:(id)delegate; + @end @interface ASCollectionViewFlowLayoutInspector : NSObject @@ -37,6 +45,4 @@ - (instancetype)initWithCollectionView:(ASCollectionView *)collectionView flowLayout:(UICollectionViewFlowLayout *)flowLayout; -- (void)cacheSelectorsForCollectionView:(ASCollectionView *)collectionView; - @end diff --git a/AsyncDisplayKit/Details/ASCollectionViewFlowLayoutInspector.m b/AsyncDisplayKit/Details/ASCollectionViewFlowLayoutInspector.m index beb654d0..e90cd461 100644 --- a/AsyncDisplayKit/Details/ASCollectionViewFlowLayoutInspector.m +++ b/AsyncDisplayKit/Details/ASCollectionViewFlowLayoutInspector.m @@ -30,19 +30,18 @@ } if (self != nil) { - [self cacheSelectorsForCollectionView:collectionView]; + [self didChangeCollectionViewDelegate:collectionView.asyncDelegate]; _layout = flowLayout; } return self; } -- (void)cacheSelectorsForCollectionView:(ASCollectionView *)collectionView +- (void)didChangeCollectionViewDelegate:(id)delegate; { - if (collectionView == nil) { + if (delegate == nil) { _delegateImplementsReferenceSizeForHeader = nil; _delegateImplementsReferenceSizeForFooter = nil; } else { - id delegate = [self delegateForCollectionView:collectionView]; _delegateImplementsReferenceSizeForHeader = [delegate respondsToSelector:@selector(collectionView:layout:referenceSizeForHeaderInSection:)]; _delegateImplementsReferenceSizeForFooter = [delegate respondsToSelector:@selector(collectionView:layout:referenceSizeForFooterInSection:)]; }