Qual é a diferença entre declarar um objeto como uma instância separada e usar um objeto companheiro dentro de uma classe?
sobes.tech IA
Resposta da IA
No linguagem Swift, o objeto companheiro é implementado através da palavra-chave static ou class dentro da classe, o que permite criar propriedades e métodos associados à própria classe, e não às suas instâncias. Isto é análogo ao padrão "Singleton" ou aos membros estáticos em outras linguagens.
-
Instância de objeto separada — é um objeto concreto criado através da inicialização da classe. Cada instância tem seu próprio estado e comportamento.
-
Objeto companheiro (objeto estático) — é uma parte da classe comum a todas as instâncias, que não requer a criação de um objeto para acesso.
Exemplo:
class MyClass {
static let companion = MyClass()
var value: Int = 0
}
// Uso
MyClass.companion.value = 10
let instance = MyClass()
instance.value = 5
Aqui, companion é um objeto companheiro estático, acessível sem criar uma instância da classe, e instance é uma instância separada com seu próprio estado.