Open
Description
Presenting a child coordinator too quickly sometimes results in the Coordinator getting deallocated. Find the attached sample project as proof.
https://github.com/chefnobody/DeallocSample
In the attached project, you will find NavigationCoordinator
s that trigger some action after 1.0 second:
RootCoordinator
pushes ListCoordinator
, which presents ProfileCoordinator
, which presents OnboardingCoordinator
.
Line ~73 of AppDelegate reads like this:
// Change this line's dispatch time to `.now() + 1.0` to avoid the bug:
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { [weak self] in
self?.trigger(.profile)
}
Run the code as-is should result in a log like this:
*****
ProfileCoordinator deinit
Changing the dispatch delay time on line 73 to 1.0
:
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { [weak self] in
self?.trigger(.profile)
}
Does not cause ProfileCoordinator to deallocate and successfully presents the final OnboardingCoordinator
Metadata
Metadata
Assignees
Labels
No labels