top of page

Swift 5.8 permite o uso implícito de self

Sabe aquela regra que sempre é preciso utilizar o "self" dentro de closures? Com a nova versão do Swift, isso não é mais obrigatório 🎉


No último dia 30 de março, a versão 5.8 do Swift foi oficialmente liberada e, com ela, uma melhoria que promete closures menos verbosas. Além disso, você pode consultar todas as novidades no post do swift.org clicando aqui.



Como fazer:

Para ficar super simples de entender, vamos utilizar um exemplo super comum. Sabemos que, lidar com closures em Swift, é lidar também com a tratativa do famigerado memory leak. O cenário mais comum é quando temos o retorno de uma requisição de API.


No código abaixo, vemos um exemplo de um método assíncrono sendo chamado e retornando uma String dentro de uma closure. Para este exemplo, vamos considerar que precisamos salvar o "dadoRetornado" em uma variável fora do contexto da closure.

Antigo jeito de tratar weak self


Com isso, fazemos o uso do "[weak self]", para gerar uma referência fraca do nosso self, surgindo assim a obrigação do uso de "self?." para referenciar a variável "dadosParaSalvar":


Nesse mesmo exemplo, para deixar o código menos verboso, sem perder a tratativa do memory leak, com a nova versão 5.8, basta você fazer o unwrapping do próprio "self" para que não seja mais necessário utilizar "self" antes das variáveis que estão fora do contexto:


Pode parecer algo simples, mas no nosso dia a dia como pessoas desenvolvedoras iOS, é uma melhoria interessante na legibilidade do nosso código. Nesse outro link, você também pode conferir outros exemplos de tratativa. Vale a leitura 🙂


Ah e, se você quer entender um pouco mais sobre "memory leak", "weak self", "guard let" e etc, veja este post e assista o vídeo abaixo:




 

Venha conhecer a mentoria personalizada e tire suas dúvidas mais específicas de código, carreira, entrevista, evolução técnica e vamos juntos dar o próximo passo no seu objetivo.



130 visualizações0 comentário

Posts recentes

Ver tudo

Comments


bottom of page