iOS - gerenciamento de memória
O gerenciamento de memória no iOS era inicialmente não ARC (contagem automática de referência), onde temos que reter e liberar os objetos. Agora, ele suporta ARC e não precisamos reter e liberar os objetos. O Xcode cuida do trabalho automaticamente em tempo de compilação.
Problemas de gerenciamento de memória
De acordo com a documentação da Apple, os dois principais problemas no gerenciamento de memória são -
Liberando ou substituindo dados que ainda estão em uso. Isso causa corrupção de memória e normalmente resulta em travamento do aplicativo ou, pior, dados corrompidos do usuário.
Não liberar dados que não estão mais em uso causa vazamentos de memória. Quando a memória alocada não é liberada, embora nunca seja usada novamente, isso é conhecido como vazamento de memória. Vazamentos fazem com que seu aplicativo use quantidades cada vez maiores de memória, o que por sua vez pode resultar em baixo desempenho do sistema ou (no iOS) seu aplicativo sendo encerrado.
Regras de gerenciamento de memória
Nós possuímos os objetos que criamos e temos que liberá-los posteriormente, quando não forem mais necessários.
Use Retain para obter a propriedade de um objeto que você não criou. Você também deve liberar esses objetos quando eles não forem necessários.
Não libere os objetos que você não possui.
Manuseio de memória em ARC
Você não precisa usar liberação e retenção no ARC. Portanto, todos os objetos do controlador de visualização serão liberados quando o controlador de visualização for removido. Da mesma forma, os subobjetos de qualquer objeto serão liberados quando forem liberados. Observe que se outras classes tiverem uma referência forte a um objeto de uma classe, a classe inteira não será lançada. Portanto, é recomendável usar propriedades fracas para delegados.
Ferramentas de gerenciamento de memória
Podemos analisar o uso de memória com a ajuda dos instrumentos da ferramenta Xcode. Inclui ferramentas como Monitor de Atividade, Alocações, Vazamentos, Zumbis e assim por diante.
Etapas para analisar alocações de memória
Step 1 - Abra um aplicativo existente.
Step 2 - Selecione Produto e Perfil conforme mostrado abaixo.
Step 3 - Selecione Alocações na próxima tela mostrada abaixo e selecione Perfil.
Step 4 - Veremos a alocação de memória para diferentes objetos como mostrado abaixo.
Step 5 - Você pode alternar entre os controladores de visualização e verificar se a memória foi liberada corretamente.
Step 6 - Da mesma forma, em vez de alocações, podemos usar o Activity Monitor para ver a memória geral alocada para o aplicativo.
Step 7 - Essas ferramentas nos ajudam a acessar nosso consumo de memória e localizar os locais onde ocorreram possíveis vazamentos.