In un'applicazione basata su una barra delle linguette, se ho un controller inserito nello stack di navigazione da una scheda e poi, quando un'altra scheda è attiva, provo a far scattare il controller, non viene rilasciato a meno che non lo mostri senza animazione .UIKit non rilascia il controller se non viene rimosso con l'animazione?
Questo funziona:
[navigationController popToRootViewControllerAnimated:NO];
E questo non lo fa:
[navigationController popToRootViewControllerAnimated:YES];
Qualcuno ha qualche idea di cosa sta succedendo qui? Il parametro animated
non viene utilizzato correttamente?
UPDATE:
di Apple mi ha informato che questo è davvero un bug in UIKit, e hanno segnato qualcuno come urgente e ad essa assegnati. Potrebbe essere stato risolto nelle ultime versioni ma non ho avuto il tempo di controllare.
Sembra un errore in UIKit. Se puoi confermarlo con un semplice progetto, invialo ad Apple. –
Ho appena creato un progetto di esempio per confermarlo, e posso farlo. Ovviamente non è qualcosa che accade con * ogni * uso di UINavigationController. Succede se si ha un UITabBarController con un controller di navigazione all'interno di una scheda e da un'altra scheda si apre il controller di navigazione. Quello che ho notato è che, se si dispone di più di 1 controller di visualizzazione nello stack, vengono rilasciati tutti tranne l'ultimo, che rimane conservato fino a quando non si seleziona di nuovo l'altra scheda (quella con il controller di navigazione). – eugeniodepalo
Se per "ultimo" controller si intende il controller di root, allora questo è pertinente: "Se il controller di visualizzazione in cima allo stack è il controller di visualizzazione radice, questo metodo non fa nulla ... non puoi inserire l'ultimo elemento su lo stack. " (Dalla documentazione di 'popViewControllerAnimated:'.) Molto raramente devi preoccuparti quando UIKit rilascia oggetti. Assicurati di fare la tua parte della gestione della memoria. Chissà, forse le strutture si aggrappano a un oggetto per riciclarlo in seguito? O forse no. Il punto è che puoi fare affidamento su di loro per essere ben collaudati. – Felixyz