Pergunta

Ao programar para o iPhone, eu acho que eu muitas vezes precisam usar a mesma instância de um objeto em vários pontos de vista. Qual a melhor forma de lidar com isto? Minha estratégia até agora tem sido para criá-lo como um membro da exibição de raiz e passá-lo para vistas subsequentes que retê-lo como um membro. No entanto, isso não parece ser uma boa abordagem, uma vez que seria muito difícil para atualizar o que a referência em cada classe está apontando. Também já vi Singleton aulas, bem como a AppDelegate utilizado para este fim. Como um desenvolvedor de iPhone, como você lida com este problema em grandes aplicativos?

Foi útil?

Solução

A abordagem App Delegado é fácil de fazer, a desvantagem é que tudo tem que ir buscar o delegado e, em seguida, obter o objeto compartilhado.

Singletons significa apenas as classes que usam o singleton tem que saber sobre isso, mas pode ser mais difícil de testes de unidade de gravação contra ou limpar adequadamente em situações de pouca memória. Além disso, você deve escrever as classes únicas com mais cuidado para que eles funcionem corretamente (veja docs Apple em singletons).

Passar um objeto ao redor pode ficar velho, porque às vezes você acaba tendo apenas um link para o objeto para passar para outra pessoa, por isso gostaria de evitar essa abordagem a menos que você foram apenas de passagem de um pai para algumas crianças imediatos.

Entre os dois primeiros, eu me inclino um pouco para singletons apenas por causa do gráfico de dependência ser mais simples (como classes mencionadas incluindo apenas cabeçalhos únicos que se preocupam em vez de um monte da App delegado). Se você tivesse um número deles a coisa a fazer seria fazer aulas de distribuição únicas que prendeu em casos individuais de grupos de ramos, apenas para manter o delegado aplicativo leve e não ter que fazer tantas aulas que eram verdadeiros singletons.

Eu gosto de usar o delegado app para segurar a raiz do seu UI real, como o controlador de barra de abas ou controlador de vista primário. Que apenas parece mais natural do que enchê-lo em outro lugar.

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