---
title: "Programmare in SwiftUI: class e struct in SwiftUI"
url: https://www.sofapps.it/it/blog/swiftui-programming-classes-structs/
date: 2020-01-07
author: Costantino Pistagna
language: it
translated_from: en
tags: [SwiftUI, Tutorial]
---

# Programmare in SwiftUI: class e struct in SwiftUI

> Dichiarare una View come semplice class non funziona, perché una class può avere sottoclassi e il protocol View non potrebbe garantire l'unicità di Self. Marcare la class come final elimina il problema. A quel punto, se serve davvero, si può usare una class in SwiftUI.

Sono piuttosto sicuro che a tutti sia venuta in mente, almeno una volta, questa domanda.

<hr>

>"Se il concetto alla base di una View è il protocol, cosa succede se provo a usare una class?"

<hr>

Proviamo ad analizzarla nel dettaglio.

```swift 

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.

```swift

class SomeView<T: View> {
   var body: some View {
      Text("Hello World")
   }
}

```

oppure, più semplicemente:

```swift

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.
