Sobes.tech
Junior — Middle

Quali operazioni o proprietà sono disponibili durante la definizione di una classe che non sono presenti in una struttura?

sobes.tech AI

Risposta dell'AI

In Swift, le classi hanno diverse caratteristiche che le strutture non possiedono:

  • Ereditarietà: le classi possono ereditare da altre classi, consentendo di creare gerarchie e di sovrascrivere metodi.
  • Deinitializers (deinit): le classi possono avere deinitializer per liberare risorse quando un'istanza viene eliminata.
  • Tipo di riferimento: le classi vengono passate per riferimento, mentre le strutture per valore.
  • Tipi di proprietà: le classi possono avere proprietà che sono riferimenti ad oggetti, influenzando la gestione della memoria.
  • Possibilità di usare riferimenti weak e unowned per prevenire cicli di riferimenti forti.

Esempio di una classe con deinitializer:

class Person {
    var name: String
    init(name: String) {
        self.name = name
    }
    deinit {
        print("Person \(name) sta per essere deinitializzata")
    }
}