Domanda

(Solo per sapere che sto imparando a sviluppare per iPhone, senza interfacae builder)

Sto codificando la mia prima app multi-view, che ha un viewcontroller root e altri due viewcontroller, e il viewcontroller root usa un caricamento lazy, quindi quando viewDidLoad crea il primo viewcontroller e aggiunge la sua vista alla vista secondaria, ma non crea l'altro finché non è necessario. Ma, dopo che il secondo è stato caricato, entrambi rimangono lì fino al termine dell'applicazione (a meno che non riceva un avviso di memoria).

Quindi mi chiedo: quando l'utente commuta due l'altra vista, dovrei scaricare l'altra che viene rimossa (impostandola su zero - è una proprietà di mantenimento)? Quindi ogni volta che l'utente fa clic sul pulsante, l'attuale viewcontroller viene scaricato (dopo essere stato rimosso dalla superview) e quello successivo viene caricato e aggiunto come sottoview?

Quindi questa è la cosa giusta da fare, o è giusta, ma solo quando l'applicazione ha molte visualizzazioni e la mia non è abbastanza complicata da giustificare questo, o è brutta farlo e dovrei solo lasciare che didReceiveMemoryWarning se ne occupi (in didReceiveMemoryWarning ho impostato il viewcontroller che al momento non viene visualizzato su zero)?

È stato utile?

Soluzione

La risposta dipende davvero. In genere, è necessario rilasciare e impostare su zero la vista che non viene visualizzata, ma se l'utente passerà da una all'altra frequentemente potresti voler mantenere la vista nascosta (memorizzata nella cache).

Non vuoi davvero che la tua app spinga il telefono dell'utente a didReceiveMemoryWarning. Quando ricevi questo avviso, nel telefono stanno accadendo altre cose che potrebbero causare il blocco dell'applicazione per un momento mentre l'iPhone esegue il dump di pagine Safari nella cache, oggetti UIImageView memorizzati nella cache, ecc ... questo processo può essere evidente all'utente finale e al tuo l'applicazione potrebbe non essere liscia come dovrebbe.

È anche importante ricordare che alcuni utenti potrebbero utilizzare iPhone, iPod Touch e 3G di prima generazione in modo che non dispongano della memoria aggiuntiva del 3GS.

Detto questo, sbaglio sul lato di essere conservatore con la memoria in modo da rilasciare e annullare la vista, quindi ri-istanziarla quando l'utente vuole vederla. L'impatto dell'allocazione della vista rispetto alla pulizia del sistema a causa di didReceiveMemoryWarning sarà in genere molto inferiore per l'utente dell'applicazione.

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