mirror of
https://github.com/Instagram/IGListKit
synced 2026-05-14 21:08:48 +00:00
Summary: Originally, `allowsBackgroundReloading` was added to improve performance, but ironically, it's causing lots of performance issues among other issues. * Performance: Looking back, it's not too surprising that it causes perf issues. We're falling back to a full `-reloadData` if the view is not in the window, which can happen pretty often. For example, if a view-controller is within a `UINavigationController` stack but not on top, or within a `UITabBarController`. Because a full `-reloadData` will re-query the cells and re-create the entire layout, it's going to be more expensive than an incremental update via `-performUpdatesAnimated`. The proof is in the data and we have a few examples where this flag was the cause of significant UI stalls. * Bugs: Because we might reload cells often, it can create strange animation artifacts. Specifically, it was breaking the `UIView` snapshots just before a transition, like the new zoom animator. Overall, we ended disabling this feature and I think most apps will be in the same boat. But what if this flag does improve my app's performance? * File an issue and lets chat! I'd be curious to understand why that's the case. If a full `-reloadData` is more performant than an incremental `-performUpdatesAnimated`, than something odd is happening and I don't think this flag is the right solution. Reviewed By: joetam Differential Revision: D25884777 fbshipit-source-id: c4626a52082ef4c7b7300b21077529f26c551e70 |
||
|---|---|---|
| .. | ||
| Assets | ||
| Objects | ||
| IGListAdapterE2ETests.m | ||
| IGListAdapterProxyTests.m | ||
| IGListAdapterStoryboardTests.m | ||
| IGListAdapterTests.m | ||
| IGListAdapterUpdaterTests.m | ||
| IGListBatchUpdateDataTests.m | ||
| IGListBindingSectionControllerTests.m | ||
| IGListBindingSingleSectionControllerTests.m | ||
| IGListCollectionScrollingTraitsTests.m | ||
| IGListCollectionViewLayoutTests.m | ||
| IGListCollectionViewTests.m | ||
| IGListContentInsetTests.m | ||
| IGListDebuggerTests.m | ||
| IGListDiffResultTests.m | ||
| IGListDiffSwiftTests.swift | ||
| IGListDiffTests.h | ||
| IGListDiffTests.m | ||
| IGListDisplayHandlerTests.m | ||
| IGListGenericSectionControllerTests.m | ||
| IGListKitTests-Bridging-Header.h | ||
| IGListSectionMapTests.m | ||
| IGListSingleNibItemControllerTests.m | ||
| IGListSingleSectionControllerTests.m | ||
| IGListSingleStoryboardItemControllerTests.m | ||
| IGListTestCase.h | ||
| IGListTestCase.m | ||
| IGListTestHelpers.h | ||
| IGListWorkingRangeHandlerTests.m | ||
| IGReloadDataUpdaterTests.m | ||
| Info.plist | ||