Назад к вопросам
Junior — Middle
76
Какой тип ссылки в программировании обеспечивает сохранение доступа к объекту, даже если его не имеют явно владельцы?
Ответ от нейросети
sobes.tech AI
В программировании тип ссылки, который обеспечивает сохранение доступа к объекту, даже если у него нет явных владельцев, называется weak reference (слабая ссылка). В iOS и Swift слабые ссылки используются для предотвращения циклов удержания (retain cycles), когда объект не должен увеличивать счетчик ссылок на другой объект, чтобы избежать утечек памяти.
Пример в Swift:
class Person {
var name: String
weak var apartment: Apartment? // слабая ссылка
init(name: String) {
self.name = name
}
}
class Apartment {
let unit: String
init(unit: String) {
self.unit = unit
}
}
var john: Person? = Person(name: "John")
var unit4A: Apartment? = Apartment(unit: "4A")
john?.apartment = unit4A
// Если john и unit4A будут удалены, apartment не удерживает сильную ссылку и объект освободится
john = nil
unit4A = nil
Здесь weak гарантирует, что ссылка не удерживает объект в памяти, если на него нет других сильных ссылок.