Sobes.tech
Junior — Middle

É possível declarar uma referência fraca como constante, e em que casos isso é aceitável?

sobes.tech IA

Resposta da IA

Em Swift, a referência fraca (weak) deve sempre ser declarada como uma variável (var), e não como uma constante (let). Isto ocorre porque a referência fraca torna-se automaticamente nil quando o objeto ao qual ela se refere é libertado da memória. Se a referência fraca fosse uma constante, não seria possível alterar o seu valor para nil, o que contradiz a lógica das referências fracas.

Assim, declarar uma referência fraca como uma constante é impossível e sem sentido. Um exemplo de declaração correta:

class MyClass {
    weak var delegate: SomeDelegate?
}

Se precisar que a referência seja uma constante, pode usar uma referência forte (let), mas então ela não será fraca e pode levar a ciclos de retenção.