Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
📝 Description
❤️ SwiftUI
💡 MVVM / MVI
@Published
, we ensure that any state changes are propagated to the SwiftUI view. Intent is an enum that represents possible user actions. The whole ViewModel is then injected into the View through its init and referenced as@ObservedObject
. Read this article for more information about all those new property wrappers. Also, learn the difference between@ObservedObject
and@StateObject
. 🤓🤩 Async / await +
@MainActor
@MainActor
to the rescue! If you annotate any class with@MainActor
it means that all of its properties and methods will automatically be set, called, and accessed on the main queue. It also applies to any of its subclasses. So we can just annotate ourBaseViewModel
andFlowController
classes with@MainActor
and it's all done. 🤗 Read this article for a more in-depth explanation.😶 What’s missing?
📚 MVI references
📚 Additional references