I was able to attend WWDC this year and had a chance to talk to Apple engineers about a few issues I’ve been dealing with.
Deferred location updates unavailable
Deferred location updates are a feature of CLLocationManager where you can tell it to save updates until a certain amount of time has passed or the user has moved a certain distance, and then send them all at once as a batch.
There are currently no supported hardware/iOS combinations for deferred location updates (Stackoverflow suggests there haven’t been since iOS 9 or so). Apple would like to enable it again but currently doesn’t see a good way to do it. It might be deprecated in the future. They took my feedback that it would be nice if there were a way to test implementations in case it starts working again in the future.
Crash report symbolication (rdar://40906908)
I noticed an issue a while back that crash reports from Swift based App Store/TestFlight apps would not be symbolicated completely correctly. It wasn’t so bad that they became unusable, but any glitches in symbolication makes tracking down problems harder. The main symptom is that the crash report will place main(), which is usually synthesized from the @UIApplicationMain keyword in your app delegate file, in a completely different Swift file. From my testing, it only appears to occur when uploading builds with bitcode.
Status: Unresolved.
Preserve vector data (rdar://40914277, duplicate of rdar://32914633)
The ability to ship vector data with assets catalogues and scale assets at runtime was added in Xcode 9. In my experience it has never worked as advertised. It was pushed again in a few sessions this year, so I brought up my issues with one of the presenters and engineers at the labs. Everyone was surprised it didn’t work, but the bug I filed ended up being marked a duplicate of a much older radar. 🤷♂️
Status: Unresolved.
Custom input views and safe area bounds (rdar://40815114)
With the introduction of safe area bounds, creating custom input views got a little more complicated. Partly that’s because of bugs. It’s apparently impossible to build an input view that respects safe areas without resorting to writing some layout related code (insert link to blogpost).
Status: Unresolved.