Skip to content

Commit

Permalink
[ASCollectionView] Prevent prefetching from being enabled to eliminat…
Browse files Browse the repository at this point in the history
…e overhead. (#65)

Some apps explicitly enable this, which is counterproductive with ASDK.
  • Loading branch information
appleguy committed Apr 25, 2017
1 parent 8013e25 commit ce91d3c
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions Source/ASCollectionView.mm
Original file line number Diff line number Diff line change
Expand Up @@ -258,12 +258,12 @@ - (instancetype)_initWithFrame:(CGRect)frame collectionViewLayout:(UICollectionV
if (!(self = [super initWithFrame:frame collectionViewLayout:layout]))
return nil;

// Disable UICollectionView prefetching.
// Disable UICollectionView prefetching. Use super, because self disables this method.
// Experiments done by Instagram show that this option being YES (default)
// when unused causes a significant hit to scroll performance.
// https://github.com/Instagram/IGListKit/issues/318
if (AS_AT_LEAST_IOS10) {
self.prefetchingEnabled = NO;
super.prefetchingEnabled = NO;
}

_layoutController = [[ASCollectionViewLayoutController alloc] initWithCollectionView:self];
Expand Down Expand Up @@ -2098,6 +2098,16 @@ - (void)layer:(CALayer *)layer didChangeBoundsWithOldValue:(CGRect)oldBounds new

#pragma mark - UICollectionView dead-end intercepts

- (void)setPrefetchDataSource:(id<UICollectionViewDataSourcePrefetching>)prefetchDataSource
{
return;
}

- (void)setPrefetchingEnabled:(BOOL)prefetchingEnabled
{
return;
}

#if ASDISPLAYNODE_ASSERTIONS_ENABLED // Remove implementations entirely for efficiency if not asserting.

// intercepted due to not being supported by ASCollectionView (prevent bugs caused by usage)
Expand Down

0 comments on commit ce91d3c

Please sign in to comment.