Какие stored-свойства экземпляра ещё доступны внутри его deinit?
База Hintsage
ARC и память
ARC, reference cycles, weak/unowned и время жизни объектов.
Практика
Вопросы: ARC и память
От чего зависит поток выполнения deinit, когда последняя сильная ссылка освобождается в фоне?
Каким образом ARC обнуляет weak-ссылки при уничтожении объекта?
При выполнении callback, захватившего self слабо, как guard let влияет на время жизни объекта?
final class Screen {
var onTap: (() -> Void)?
func bind() {
onTap = { [weak self] in
guard let self else { return }
self.render()
}
}
func render() { print("render") }
}
Объясните механизм: почему Swift не разрешает объявлять weak-ссылку на значение-тип?
После попытки сделать делегат слабой ссылкой компилятор отклоняет объявление. Какое ограничение типа отсутствует у EventHandler?
protocol EventHandler {
func handle()
}
final class Controller {
weak var handler: EventHandler?
func run() {
handler?.handle()
}
}
При уничтожении экземпляра класса-наследника в каком порядке выполняются его deinit и deinit суперкласса?
Можно ли считать weak-ссылку гарантированно ненулевой внутри deinit объекта?
Почему уменьшение числа сильных ссылок до нуля не гарантирует немедленного уменьшения RSS-памяти процесса?
При создании замыкания, выходящего за пределы метода, чем отличается захват свойства от захвата экземпляра для времени жизни владельца?
Что происходит с объектом при самоприсваивании его сильной ссылке?
После возврата функции благодаря чему сохраняется захваченное локальное состояние в escaping-замыкании?
Зачем Swift требует объявлять weak-ссылку переменной, а не константой?
Какая особенность подсчёта ссылок мешает ARC автоматически освобождать недостижимый цикл сильных ссылок?
Разбор ошибки: к чему приводит обращение к unowned(unsafe)-ссылке после уничтожения объекта-владельца?
Опишите, кто отвечает за время жизни экземпляра Swift, переданного через Unmanaged.
Почему слабая ссылка в Swift должна быть optional?
Что происходит с числом сильных ссылок на объект при присваивании его weak-ссылке?
Что происходит с временем жизни объекта при чтении weak-ссылки?
Разберите случай: при создании большого числа Objective-C-объектов в цикле память растёт до конца итерации run loop, хотя локальные ссылки уже исчезли. Какой механизм ARC объясняет это?
Показано 21–40 из 50