On iOS 13.0, on the "Ask" screen, tapping several times on the results pane to display more answers will eventually cause the app to stop responding. This situation can usually be caused in less than 10 taps. After the app has been unresponsive for some time, iOS will kill the app. This usually happens from 10 - 90 seconds after the app stops responding.
This only happens in iOS 13.0, but not in iOS 13.1. I've only seen this happen on the "Ask" screen, and not the "Decide" or "Choose" results screen, but the same code is used on all screens, so in theory it could happen on other screens as well.
The problem appears to happen when the label of the answer pane (a button) is set to the new answer. I've observed the app in the time profiler and verified that the CPU usage goes to near 100% when the problem occurs, and remains there until the app is killed by iOS.
Symbolicated crash reports for this issue differ, but they all indicate the app was killed for exceeding one or another CPU usage limit. NSCoreTypeSetter is a class that often shows up in the stack trace. This is speculative, but perhaps UIKit or Core Text occasionally are having problems formatting the text to display in the button title.
Given that this issue does not occur in iOS 13.1, and iOS 13.1 is scheduled to be released in two days (September 24 2019), I probably won't spend more time trying to find a cause or a workaround for this issue. The problem will disappear when users upgrade to iOS 13.1, without any source changes or a rebuild. I'll add a note to the README.
This problem should have been caught during testing. Here's why it wasn't:
- All physical iOS 13 test devices were running iOS 13.1 beta by the time the final build of the app was created
- While there is a UI test that checks that the "Ask" screen is functioning properly, and the test simulators were using iOS 13.0, the test taps the answer pane only once and verifies the answer is one of the acceptable choices. It does not tap the pane multiple times and check for responsiveness.