Domanda

Ho una navigazione per iPhone. Quando si preme su una cella nel Tableview una nuova UIViewController viene inserito nello stack di navigazione. In questo controller della vista Sto installando un titleView personalizzato nel metodo viewDidLoad:

- (void)viewDidLoad {
    [super viewDidLoad];

    // Setup custom navigation title
    [self setTitle:@"Mediaportal"];
    navItem = [[NavigationBarTitleItemViewController alloc] initWithNibName:@"NavigationBarTitleItem" bundle:nil];
    [navItem setTitle:[theServer name]];
    [navItem setSubTitle:@""];
    [self.navigationItem setTitleView:navItem.view];

…
}

Una volta che tornare alla RootViewController:

[self.navigationController popToRootViewControllerAnimated:YES];

l'applicazione si blocca con il seguente errore (NSZombieEnabled = YES):

*** -[CALayer retain]: message sent to deallocated instance 0x5a5fd80

Da quello che posso vedere la RootViewController ancora tenta di accedere al titleView personalizzato, che è stato deallocato con il secondo controller della vista. Una volta che io commento la parte titleView personalizzato nel mio codice funziona l'applicazione. Ho cercato di impostare il navigationItem.titleView a zero (come si trova nella documentazione di Apple) prima del secondo ViewController viene deallocato, ma che non aiuta.

Hai un suggerimento che cosa posso fare per prevenire questo incidente?

Grazie, Mark.

È stato utile?

Soluzione 2

Finalmente ho trovato la soluzione per esso (un bel semplice). Devo alloc e init il navItem attraverso la sua proprietà allora esso viene trattenuto:

self.navItem = [[NavigationBarTitleItemViewController alloc] initWithNibName:@"NavigationBarTitleItem" bundle:nil];

Altri suggerimenti

Ho avuto questo stesso errore esatto di un mese fa, esattamente nella stessa situazione. E mi faceva NUTS.

ho scoperto che il viewController mi è stato popping troppo non era stato deallocato a tutti. Ho avuto una consuetudine UIButton sottoclasse aggiunto a questo punto di vista, tuttavia, che era stato deallocato quando il secondo punto di vista era stato spinto. Così, quando popping indietro, l'UIButton non c'era.

Controlla la vista che si stanno spuntando di nuovo a, per assicurarsi di non hai tutte le classi che si sta deallocando, o se è autoreleased a vostra insaputa.

Spero che questo aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top