Fixes crash when accessing a cell within working range updates #216
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Changes in this pull request
I was able to build a unit test that reproduces the issue. We can avoid the crash by simply returning
nil
when accessing a cell while working range events are being vended.There is definitely something weird going on here though. When debugging
cellForItemAtIndexPath:
I found:So in theory we should be fine, right? But when I continue I get
There were 3 sections in the UICV before the update, but the data source and structure powering
numberOfSections
are updated.-numberOfItemsBeforeSection:
must be accessing some state that isn't set yet from the batch updates block. Unfortunately the details of that are private. Ideally-[UICollectionView cellForItemAtIndexPath:]
would just returnnil
if it hasn't finished updating yet.I'm a little skeptical about this fix, and this might require filing a radar with Apple.
Fixes #177
Pull request checklist