Ответ
В Swift к reference types (типам-ссылкам) относятся:
-
Классы (
class):- Хранятся в куче (heap).
- При присваивании или передаче в функцию копируется только ссылка на один и тот же экземпляр.
- Управление памятью через ARC (Automatic Reference Counting).
class Person { var name: String init(name: String) { self.name = name } } let alice = Person(name: "Alice") let bob = alice // bob и alice ссылаются на ОДИН объект bob.name = "Bob" print(alice.name) // "Bob"
-
Замыкания (
closure):- Также являются reference types.
- Даже если захватывают value types (структуры), само замыкание размещается в куче.
-
Акторы (
actor):- Введены в Swift 5.5 для безопасной параллельной работы.
- Являются reference types, но обеспечивают изоляцию (actor isolation), синхронизируя доступ к своим изменяемым свойствам.
actor BankAccount { private var balance: Double = 0 func deposit(_ amount: Double) { balance += amount } }
Контраст с Value Types: В отличие от структур (struct), перечислений (enum) и кортежей (tuple), изменение экземпляра reference type через одну ссылку влияет на все другие ссылки на этот объект.