Frage

This project is for iPhone with iOS 5 using ARC and Core Data.

All built in Xcode Storyboards, I have a UITabBarController with a few tabs. Three of these views are UITableViewControllers with a UISearchDisplayController attached. If I simulate a memory warning in the iPhone simulator, whatever views are not active get dumped, and when I tap on the tab for one of these views with the searchDisplayController, NSZombieEnabled tells me -[UISearchDisplayController retain]: message sent to deallocated instance.

Here's my -didReceiveMemoryWarning:

- (void)didReceiveMemoryWarning
{
    [(PahAppDelegate *)[[UIApplication sharedApplication] delegate] saveContext];
    // Release any cached data, images, etc that aren't in use.
    self.searchWasActive = [self.searchDisplayController isActive];
    self.savedSearchTerm = [self.searchDisplayController.searchBar text];
    self.savedScopeButtonIndex = [self.searchDisplayController.searchBar selectedScopeButtonIndex];

    self.fetchedResultsController.delegate = nil;
    self.fetchedResultsController = nil;
    self.searchFetchedResultsController.delegate = nil;
    self.searchFetchedResultsController = nil;

    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
}

My best guess is that the UITableViewController dumps the subviews as well, and for whatever reason, it's not re-creating them when I go back to the other tabs. Since all of that functionality is built in Storyboard, I'm not quite sure how to go about requesting it re-load the searchDisplayController in question.

Note: I've never seen the app do this in the real world on the device (and neither have my beta testers), but I don't want Apple to refuse approval of the app because of this; plus fixing it seems like The Right Thing to Do.

searchDisplayController is a readonly property, so I'm not sure what tack to take to get things loaded like they should be.

War es hilfreich?

Lösung

This definitely seems like a, possibly Storyboards, bug. As mentioned here: UISearchDisplayController causes crash after viewDidUnload, a brand new project using Storyboards and a UISearchDisplayController can reproduce this without even connecting an outlet for the UISearchDisplayController into your controller. The suggestion in that thread seems sane, create the UISearchDisplayController in code. I can't vouch for the workaround as I didn't test it, but I was curious and did reproduce the new project = crash claim and saw the exact same thing.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top