Pergunta

(Só para você saber que eu estou aprendendo a desenvolver para o iPhone, sem construtor interfacae)

Eu estou codificação meu primeiro aplicativo multi-vista, que tem um viewcontroller raiz e dois outros viewcontrollers, e os usos viewcontroller raiz carregamento lento, por isso, quando viewDidLoad, ele cria o primeiro viewcontroller e adiciona seu ponto de vista ao subexibição, mas não cria o outro até que seja necessário. Mas, após o segundo foi carregado, ambos ficam lá até as extremidades do aplicativo (a menos que receba um aviso de memória).

Então, eu estou querendo saber: quando o usuário alterna dois o outro ponto de vista, eu deveria descarregar o outro que está sendo removido (definindo-a zero - é uma propriedade de retenção)? Assim, cada vez que o utilizador clica no botão, o viewcontroller corrente é descarregada (depois de ser removida do superview) e o próximo é carregado e adicionado como uma subexibição?

Portanto, esta é a coisa certa a fazer, ou é certo, mas somente quando o aplicativo tem muitos pontos de vista eo meu não é complicada o suficiente para justificar fazer isso, ou é ruim para fazê-lo em tudo e eu só deve deixe didReceiveMemoryWarning cuidar dela (Em didReceiveMemoryWarning eu definir o viewcontroller que atualmente não está sendo exibido para zero)?

Foi útil?

Solução

A resposta realmente depende. Normalmente, você deve liberar e set a zero a visão de que não está exibindo, mas se o usuário está indo para alternar entre elas freqüentemente você pode querer manter o ponto de vista oculto retidos (cache).

Você realmente não quer que sua aplicação para empurrar o telefone do usuário para didReceiveMemoryWarning. Quando você receber esse aviso, outras coisas estão acontecendo no telefone que pode causar o aplicativo para congelar por um momento enquanto o iPhone despejos em cache páginas do Safari, cache UIImageView objetos, etc ... este processo pode ser perceptível para o usuário final e o seu aplicativo pode não se sentir tão bom como deveria.

Também é importante lembrar que alguns usuários podem estar usando primeiros iPhones gen, toques para iPod e 3Gs para que eles não têm a memória extra do 3GS.

Dito isto, eu errar no lado de ser conservador com memória para que eu iria liberar e anular a vista, em seguida, re-instanciar quando o usuário quer vê-lo. O impacto de sua alloc'ing o ponto de vista em relação a limpeza do sistema devido a didReceiveMemoryWarning será tipicamente muito menos na do usuário do aplicativo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top