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).