Sobes.tech
Junior — Middle

Em que caso deve-se declarar os modelos em MVVM como classes e em que caso como estruturas?

sobes.tech IA

Resposta da IA

No iOS, ao usar a arquitetura MVVM, a escolha entre classes e estruturas para os modelos depende dos requisitos de comportamento e gestão de memória.

  • Estruturas (struct) — são tipos de valor, copiados ao serem passados. São adequadas para modelos de dados simples e imutáveis, onde é importante evitar efeitos colaterais e garantir a segurança de threads. Por exemplo, modelos que representam dados estáticos ou DTO.

  • Classes (class) — são tipos de referência, passados por referência. Usadas quando o modelo precisa ter um estado mutável, suportar herança ou quando várias partes da aplicação precisam trabalhar com a mesma instância do modelo.

No MVVM, normalmente os modelos são declarados como estruturas se forem simples e não requererem lógica complexa de mudança de estado. Se o modelo contiver lógica de negócio, propriedades observáveis ou precisar ser um estado compartilhado, é melhor usar classes.

Exemplo:

struct UserModel {
    let id: Int
    let name: String
}

class UserViewModel: ObservableObject {
    @Published var user: UserModel
    // lógica de negócio e atualização de dados
}