Skip to content

UICollectionView Crash when using delegate publishers and UICollectionViewDiffableDataSource #53

@peymankh4

Description

@peymankh4

Describe the bug
The UICollectionView crashes internally when using the delegate publishers such as didSelectItemPublisher and using UICollectionViewDiffableDataSource as dataSource.

To Reproduce

  1. Setup a collectionView with UICollectionViewDiffableDataSource as dataSource.
  2. Add an example publisher such as didSelectItemPublisher
  3. Update dataSource snapshot
  4. See crash log

Expected behavior
Shouldn't crash

Device:

  • OS: [e.g. iOS 14.5]
  • CombineCocoa 0.3.0

Additional context

Crash Log:

2021-08-04 11:21:52.800547+0100 App[6134:8095978] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
*** First throw call stack:
(
	0   CoreFoundation                      0x0000000113473fba __exceptionPreprocess + 242
	1   libobjc.A.dylib                     0x0000000112bc1ff5 objc_exception_throw + 48
	2   CoreFoundation                      0x00000001134f2523 _CFThrowFormattedException + 194
	3   CoreFoundation                      0x00000001134f0457 -[__NSArrayM insertObject:atIndex:].cold.2 + 0
	4   CoreFoundation                      0x000000011337114a -[__NSArrayM insertObject:atIndex:] + 1130
	5   Runtime                             0x000000010f64a5b8 unpackInvocation + 1410
	6   Runtime                             0x000000010f649fdd -[ObjcDelegateProxy forwardInvocation:] + 45
	7   CoreFoundation                      0x0000000113478259 ___forwarding___ + 825
	8   CoreFoundation                      0x000000011347a7a8 _CF_forwarding_prep_0 + 120
	9   UIKitCore                           0x000000012ddf07cd -[UICollectionView _notifyDidEndDisplayingCellIfNeeded:forIndexPath:] + 194
	10  UIKitCore                           0x000000012de07b5a -[UICollectionView _reuseCell:notifyDidEndDisplaying:] + 1471
	11  UIKit                               0x0000000150773878 -[UICollectionViewAccessibility _reuseCell:notifyDidEndDisplaying:] + 77
	12  UIKitCore                           0x000000012de17202 -[UICollectionView _updateAnimationDidStop:finished:context:] + 1838
	13  UIKitCore                           0x000000012de169e4 __102-[UICollectionView _updateWithItems:tentativelyForReordering:propertyAnimator:collectionViewAnimator:]_block_invoke.2110 + 77
	14  libdispatch.dylib                   0x0000000119698578 _dispatch_call_block_and_release + 12
	15  libdispatch.dylib                   0x000000011969974e _dispatch_client_callout + 8
	16  libdispatch.dylib                   0x00000001196a7b3f _dispatch_main_queue_callback_4CF + 1152
	17  CoreFoundation                      0x00000001133e18f8 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
	18  CoreFoundation                      0x00000001133dc169 __CFRunLoopRun + 2781
	19  CoreFoundation                      0x00000001133db1a7 CFRunLoopRunSpecific + 567
	20  GraphicsServices                    0x0000000122ed0d85 GSEventRunModal + 139
	21  UIKitCore                           0x000000012e7184df -[UIApplication _run] + 912
	22  UIKitCore                           0x000000012e71d39c UIApplicationMain + 101
	23  libswiftUIKit.dylib                 0x0000000118266f42 $s5UIKit17UIApplicationMainys5Int32VAD_SpySpys4Int8VGGSgSSSgAJtF + 98
	24  App                                0x000000010ef3c40a $sSo21UIApplicationDelegateP5UIKitE4mainyyFZ + 122
	25  App                                0x000000010ef3c37c $s4App11AppDelegateC5$mainyyFZ + 28
	26  App                                0x000000010ef3c4f9 main + 41
	27  libdyld.dylib                       0x0000000119727bbd start + 1
)
libc++abi: terminating with uncaught exception of type NSException
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
terminating with uncaught exception of type NSException

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions