Вопрос проверяет знание ссылочной модели Swift и основных reference-типов.
В Swift есть несколько ссылочных типов.
Основной — это class.
Также к reference-типам относятся actor и closure.
Все они работают с разделяемым состоянием.
Reference-типы играют важную роль в архитектуре и управлении памятью.
Reference type — тип, который передаётся по ссылке и разделяет состояние между всеми владельцами.
classКлассический ссылочный тип.
поддерживает наследование
управляется ARC
используется для объектов с общей логикой
class User {
var name: String = ""
}
actorСсылочный тип из Swift Concurrency.
защищает состояние от гонок данных
обеспечивает изоляцию
работает асинхронно
actor Cache {
var value: Int = 0
}
closureЗамыкания тоже являются reference-типами.
захватывают контекст
могут приводить к retain cycle
часто используются в асинхронном коде
let block = {
print("Hello")
}
возможны side effects
требуется контроль памяти
используется weak и unowned
Reference-типы нужны для разделяемого состояния и сложных сценариев. В Swift важно осознанно выбирать между value и reference моделями.