Sobes.tech
Junior

Ce sunt tipurile de referință?

sobes.tech AI

Răspuns de la AI

Tipurile de referință (Reference Types) sunt tipuri de date care, la atribuirea sau transmiterea către o funcție, transmit o referință la instanța obiectului în memorie, nu o copie a acesteia.

Caracteristici cheie:

  • Mai multe variabile pot face referire la aceeași instanță a unui obiect.
  • Modificarea stării obiectului printr-o referință se reflectă în toate celelalte referințe către același obiect.
  • Lucrul cu tipurile de referință se face prin pointeri către obiecte în heap.

Exemple de tipuri de referință în Swift:

  • Clase (class)
  • Funcții (func)
  • Closures ({...})

Comparativ cu tipurile de valoare (Value Types):

Caracteristică Tip de referință (Reference Type) Tip de valoare (Value Type)
Ce se transmite Referință (adresa în memorie) Copie a valorii
Locul de stocare Heap Stack
Copiere Referința se copiază Valoarea se copiază
Modificare Afectează obiectul original Afectează copia
class MyClass {
    var value: Int

    init(value: Int) {
        self.value = value
    }
}

var object1 = MyClass(value: 10) // Creăm o instanță de clasă
var object2 = object1          // object2 face referire acum la aceeași instanță ca object1

print(object1.value) // Ieșire: 10
print(object2.value) // Ieșire: 10

object2.value = 20 // Modificăm valoarea prin intermediul object2

print(object1.value) // Ieșire: 20 (modificarea prin object2 a afectat object1)
print(object2.value) // Ieșire: 20

Gestionarea memoriei pentru tipurile de referință în Swift se face cu ajutorul Automatic Reference Counting (ARC).