Sobes.tech
Junior

Czym są typy referencyjne?

sobes.tech AI

Odpowiedź od AI

Typy referencyjne (Reference Types) to takie typy danych, które podczas przypisywania lub przekazywania do funkcji przekazują odwołanie do instancji obiektu w pamięci, a nie jej kopię.

Kluczowe cechy:

  • Wiele zmiennych może odwoływać się do tej samej instancji obiektu.
  • Zmiana stanu obiektu przez jedno odwołanie odzwierciedla się we wszystkich innych odwołaniach do tego samego obiektu.
  • Praca z typami referencyjnymi odbywa się przez wskaźniki na obiekty na stercie (heap).

Przykłady typów referencyjnych w Swift:

  • Klasy (class)
  • Funkcje (func)
  • Zamknięcia ({...})

Porównanie z typami wartości (Value Types):

Charakterystyka Typ referencyjny (Reference Type) Typ wartości (Value Type)
Co jest przekazywane Referencja (adres w pamięci) Kopia wartości
Miejsce przechowywania Sterta (Heap) Stos (Stack)
Kopiowanie Referencja jest kopiowana Wartość jest kopiowana
Modyfikacja Wpływa na oryginalny obiekt Wpływa na kopię
class MyClass {
    var value: Int

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

var object1 = MyClass(value: 10) // Tworzymy instancję klasy
var object2 = object1          // object2 teraz odnosi się do tej samej instancji co object1

print(object1.value) // Wyjście: 10
print(object2.value) // Wyjście: 10

object2.value = 20 // Zmieniamy wartość przez object2

print(object1.value) // Wyjście: 20 (zmiana przez object2 wpłynęła na object1)
print(object2.value) // Wyjście: 20

Zarządzanie pamięcią dla typów referencyjnych w Swift odbywa się za pomocą automatycznego zliczania referencji (ARC).