Não desperdice sua criatividade para redefinir nomes próprios dentro de fechamentos em Swift.

Algumas vezes é difícil definir bons nomes para variáveis ​​enquanto estamos codificando, e no Swift, com seus ótimos recursos, isso é especialmente verdadeiro.

Ao escrever encerramentos dentro das classes, é uma boa prática manter a atenção quando você precisa acessar self. Se você não cuidar e usar [self fraco] ou [self sem dono], você pode criar uma referência circular para sua classe e mantê-la na memória, mesmo quando não precisar mais dela.

Quando usamos [self fraco] em um fechamento, precisamos olhar selfpara garantir que não seja nulo. Se não fizermos isso, poderemos interromper nossa aplicação.

Para manter garantia de que selfestá a apontar para uma instância válida podemos usar guardcomo esta: guard let _self = self else.... Quando usamos guardinstrução nesta situação, precisamos redefinir o nome do self e sabemos como é difícil criar grandes nomes de variáveis.

Recentemente, descobri um código de açúcar Swift que me permite usar palavras reservadas de linguagem como nomes de variáveis. Esta não é exatamente uma boa prática, mas pensei se seria possível usar este código de açúcar para continuar usando o selfnome para referências fracas dentro de meus encerramentos!

Para fazer isso, só precisamos usar sotaque grave para abraçar nossa selfredefinição de nome em guarddeclaração. Exemplo:

class test {
let asyncValidator = validator()
var model: people
func save
() {
// Do Save logic
}

func validate
() {
asyncValidator
.validate(entity: people) { [weak self] (result: Bool) in
guard
let `self` = self else { return }

if result {
self.save()
}
}
}
}