What works is that the app gets launched into background on significant location change. In
AppDelegate I check for the
UIApplicationLaunchOptionsLocationKey and init a location manager:
locationManager.delegate = self locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters locationManager.distanceFilter = 50 locationManager.allowsBackgroundLocationUpdates = true locationManager.startMonitoringSignificantLocationChanges()
The initial view controller is a
UITabBarController which shows a
When I set that there are no cells in the UICollectionView everything works fine and
didUpdateLocations of the
locationManager gets called.
However when the
numberOfItemsInSection returns 1, the
didUpdateLocations does not get called. Instead the
UICollectionView has 99% CPU usage for minutes until the app crashes.
I deleted all controls and all code from the cell, so it is an empty cell now, and still this happens.
In Time Profiler I see that is has something to do with
What's wrong here?
Update 1: There is the stack under
Update 2: The app works fine and never crashed when launched normally by the user.
You understand the code better than anybody on this site, but this looks suspicious:
You are running some kind of loop over Observers, whatever those are. It looks like on each one it is doing a callback, and that is doing some kind of transaction that needs a commit, and as part of the commit it is displaying something, and as part of that it is doing a bunch of layout, of subviews and so on. That's basically sopping up all of the time.
You might want to turn off the display updating until you're done.