Sobes.tech
Junior — Middle

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.