Junior — Middle
Quais são as principais dificuldades e desvantagens que você pode mencionar na implementação da arquitetura MVVM?
sobes.tech IA
Resposta da IA
Principais dificuldades e desvantagens na implementação da arquitetura MVVM no iOS:
- Complexidade de suporte e depuração: Devido à separação em Model, View e ViewModel, às vezes é difícil rastrear o fluxo de dados e entender onde exatamente ocorreu um erro.
- Redundância de código: Para telas simples, o MVVM pode levar a um número excessivo de classes e ficheiros, o que complica o projeto.
- Ligação de dados: No iOS, não há um mecanismo embutido de ligação bidirecional de dados, como em algumas outras plataformas, portanto é necessário usar bibliotecas de terceiros ou escrever muito código padrão.
- Fugas de memória: O uso incorreto de closures e referências entre View e ViewModel pode causar fugas de memória.
Exemplo de problema com fuga de memória:
class ViewModel {
var onUpdate: (() -> Void)?
}
class ViewController: UIViewController {
var viewModel = ViewModel()
override func viewDidLoad() {
super.viewDidLoad()
viewModel.onUpdate = {
self.updateUI() // Captura self sem [weak self] leva a um ciclo de retenção
}
}
func updateUI() {
// Atualização da interface
}
}
Para evitar, deve-se usar referências fracas nas closures.