diff --git a/AsyncDisplayKit/ASCollectionView.mm b/AsyncDisplayKit/ASCollectionView.mm index 08f4b43502..01b4927a7e 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 5aab03e012..179b880827 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 beb654d0c0..e90cd461d6 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:)]; }