Sobes.tech
Junior — Middle

É possível adicionar propriedades adicionais a classes ou objetos existentes através de extensões?

sobes.tech IA

Resposta da IA

Em Swift, extensões permitem adicionar novos métodos, propriedades calculadas e inicializadores a classes, estruturas e enumerações existentes, mas não é possível adicionar propriedades armazenadas.

Ou seja, não pode adicionar propriedades armazenadas adicionais através de uma extensão, mas pode adicionar propriedades calculadas que são derivadas de dados existentes.

Exemplo de uma propriedade calculada numa extensão:

extension String {
    var isPalindrome: Bool {
        return self == String(self.reversed())
    }
}

Se precisar adicionar propriedades armazenadas, geralmente usa-se objetos associados (associated objects) no runtime do Objective-C, mas isso não é um método padrão e não é suportado diretamente em Swift.