Performance Flashcards
Como você identificaria e resolveria um retain cycle?
Abordagem sugerida: O primeiro passo é a identificação – procurando um local onde ocorrem vazamentos, e é importante mencionar aqui os Instrumentos ou o Memory Graph Debugger. Vazamentos nem sempre significam ciclos de retenção (por exemplo, caches não utilizados são efetivamente vazamentos), mas são um bom ponto de partida. Depois de encontrar um possível ciclo de retenção, você precisa decidir qual lado do ciclo deve ser tornado fraco em vez de forte para resolvê-lo.
Como o Swift lida com o gerenciamento de memória?
Abordagem sugerida: Vá direto ao ARC – vá direto ao ponto e concentre-se nele, explicando sobre reter, liberar e reter contagens. Se você quiser falar também sobre sem dono e fraco, ou talvez contagem de referência para aulas, este também é o lugar.
Para ganhar pontos extras, fale sobre lugares que não são automáticos, como usar um pool de liberação automática dentro de loops apertados.
Como você explicaria o ARC para um novo desenvolvedor iOS?
Abordagem sugerida: A contagem automática de referências é um recurso que os desenvolvedores de Objective-C tinham que pensar todos os dias, mas os desenvolvedores de Swift geralmente esquecem que ele está lá. Concentre-se em por que isso economiza tempo do desenvolvedor (menos trabalho) e quais problemas de desempenho pode ter (tempo extra de CPU).
Que etapas você executa para identificar e resolver um vazamento de memória?
Abordagem sugerida: esperamos que você tenha pelo menos alguma experiência com instrumentos, então fale sobre objetos persistentes versus objetos transitórios, fale sobre filtragem para seus tipos de dados personalizados e assim por diante. Você também deve discutir como pode ter certeza de que o vazamento desapareceu, por exemplo, se você pressionar e abrir o mesmo controlador de visualização 10 vezes, o nível de memória permanecerá constante?