Pytanie moze trywialne, ale nie ogarniam jednej rzeczy.

Mamy ViewController i tworzymy powiedzmy

  1. Pierwsza opcja
    var viewModel: ViewModel!
    lub
    var viewModel: ViewModel?

pomiedzy ? a ! bedzie jakas roznica, jesli i tak wstrzykujemy w viewDidLoad?

  1. Druga opcja
    W pierwszej opcji musimy wstrzyknac w viewdidload ViewModel.
    Jak to zrobimy bez wstrzykniecia tylko Od razu utworzymy obiekt czyli:
    var viewModel = ViewModel()

Jak bedzie roznica? Nie bardzo to rozumiem

Pytanie mam jeszcze o ewentualny Networking czy tam Service z poleceniem Get. Czy przy MVVM powinnismy utworzyc taki obiekt np. bezposrednio w ViewModelu czy wstrzyknac go w ViewControllerze do przy inicjalizacji ViewModelu? Kazdy widze jakos inaczej to robi i nie wiem jak powinno byc poprawnie stosujac zasady clean code.