Programmare in SwiftUI: class e struct in SwiftUI
Perché una class non può sostituire direttamente una struct come View in SwiftUI, quale errore dà il compilatore e come una final class risolve il problema.
Tradotto dall’inglese con l’aiuto dell’IA e rivisto dall’autore.Leggi l’originale

Sono piuttosto sicuro che a tutti sia venuta in mente, almeno una volta, questa domanda.
"Se il concetto alla base di una View è il protocol, cosa succede se provo a usare una class?"
Proviamo ad analizzarla nel dettaglio.
class ContentView: View {
var body: some View {
Text("Hello World")
}
}
Il codice qui sopra, pur essendo sintatticamente perfetto, produce un errore. Il compilatore si lamenta del fatto che la class è troppo mutevole durante l'esecuzione. Una class è infatti indeterminata per sua natura: cosa succederebbe se la stessa ContentView avesse una sottoclasse?
Il protocol View non saprebbe come garantire l'unicità. * Self * continuerebbe a riferirsi a ContentView e la sottoclasse violerebbe questa regola.
class SomeView<T: View> {
var body: some View {
Text("Hello World")
}
}
oppure, più semplicemente:
final class ContentView: View {
var body: some View {
Text("Hello World")
}
}
A questo punto, se è davvero necessario, possiamo usare una class per lavorare in SwiftUI.
