Those apps probably do it via SQL query, but if there is a way to do it via Photokit it would be great to know.
Post
Replies
Boosts
Views
Activity
That seems to have fixed it! We still couldn't reproduce the crash, either before making the changes suggested by you or after, but have had no further complaints from users who were experiencing crashes. Thanks for your suggestions.
Thanks again, Claude. We are trying the third option you suggested, i.e. relocating the call in another func. Since ours is a macOS app, instead of viewDidLayoutSubviews we are using viewDidLayout method to call the configurePhotosCollectionViewAfterResize function. Also, TestFlight isn't for macOS apps, so we'll just have to try on a few different test machines. Will post an update later.
When some new users first reported the app crashing immediately on launch, we did comment out lines 7 to 52, and the crashes stopped. The main challenge is that we can't reproduce the crash on any of our test machines. So we can't check by uncommenting bit by bit. Somehow have to reproduce the crash or get clues from the crash report.
Anything you can spot in the crash report that we might have missed? It's EXC_CRASH (SIGABRT), so unhandled language exception or application passing bad data to a system routine? It mentions (compiler-generated:0) i.e. crashing in compiled generated code at Line 0? You have already pointed out the crash reason pointing to infinite loop possibility.
Thanks, Claude. Below is the code for app window resizing:
WindowDidResize Function
(Note that the app has two panes, and on reducing the window width the left (L) pane is hidden - as in Photos for Mac app).
func windowDidResize(_ notification: Notification) {
if let window = self.view.window {
let arrScreens = NSScreen.screens
if arrScreens.count 0 {
let theScreenRect = arrScreens[0]
// Hide the L pane
if (theScreenRect.frame.size.width / 3.0) = window.frame.size.width {
window.setFrame(CGRect(x: window.frame.origin.x,
y: window.frame.origin.y,
width: (theScreenRect.frame.size.width / 3.0),
height: window.frame.size.height),
display: true,
animate: true)
theSplitView?.arrangedSubviews.first?.isHidden = true
if (theSplitView.arrangedSubviews.count) 2 {
theSplitView?.removeArrangedSubview((theSplitView?.arrangedSubviews.first)!)
} else {
theSplitView = orignalSplitView
theSplitView?.arrangedSubviews.first?.setFrameSize(NSSize(width: 250.0, height: window.frame.size.height))
}
} else { // Show the L pane
window.setFrame(CGRect(x: window.frame.origin.x,
y: window.frame.origin.y,
width: window.frame.size.width,
height: window.frame.size.height),
display: true,
animate: true)
theSplitView = orignalSplitView
theSplitView?.arrangedSubviews.first?.setFrameSize(NSSize(width: 250.0, height: window.frame.size.height))
theSplitView?.arrangedSubviews.first?.isHidden = false
}
// Don't allow to resize
if (theScreenRect.frame.size.height / 1.5) = window.frame.size.height {
window.setFrame(CGRect(x: window.frame.origin.x,
y: window.frame.origin.y,
width: window.frame.size.width,
height: (theScreenRect.frame.size.height / 1.5)),
display: true,
animate: true)
} else { // Allow to resize
window.setFrame(CGRect(x: window.frame.origin.x,
y: window.frame.origin.y,
width: window.frame.size.width,
height: window.frame.size.height),
display: true,
animate: true)
}
configurePhotosCollectionViewAfterResize()
}
Configure Photos Collection View
func configurePhotosCollectionViewAfterResize() {
self.collectionViewPhotos.collectionViewLayout?.invalidateLayout()
}
These are only two functions being called when the window is resized. If anything else is needed, please let me know. Maybe we need to add something after invalidating the layout? Not sure. Many thanks.
You can delete a platform if a build has never been uploaded for the platform you wish to delete. Additionally, at least one existing platform version needs to be in an editable app status (for example, have an iOS version in editable status).
If the criteria is met, hover over the platform you wish to delete and click the delete button (–) that appears to the right of the platform.
So in iTunes Connect > Apps, go to your app and click on (+) next to iOS Apps. This will put the app in editable state. Then hover over the tvOS thingy and delete it.