Почему уменьшение числа сильных ссылок до нуля не гарантирует немедленного уменьшения RSS-памяти процесса?
База Hintsage
Программирование Swift
Язык Swift и разработка приложений в экосистеме Apple.
Темы раздела
Выберите подраздел
- 0 вопросов
Общие вопросы
Смешанные вопросы по Swift.
Открыть раздел - 50 вопросов
Swift Core
Типы, функции, структуры, классы и базовая семантика.
Открыть раздел - 49 вопросов
Optionals и система типов
Optionals, value/reference semantics, casting и pattern matching.
Открыть раздел - 50 вопросов
Протоколы и generics
Protocols, extensions, associated types и generic constraints.
Открыть раздел - 50 вопросов
Коллекции и функциональный стиль
Collections, closures, map/filter/reduce и sequences.
Открыть раздел - 50 вопросов
ARC и память
ARC, reference cycles, weak/unowned и время жизни объектов.
Открыть раздел - 50 вопросов
Конкурентность
async/await, actors, tasks и безопасность данных.
Открыть раздел - 2 вопроса
Обработка ошибок
throws, Result, defer и моделирование ошибок.
Открыть раздел
Практика
Вопросы: Программирование Swift
При создании замыкания, выходящего за пределы метода, чем отличается захват свойства от захвата экземпляра для времени жизни владельца?
Что происходит с объектом при самоприсваивании его сильной ссылке?
После возврата функции благодаря чему сохраняется захваченное локальное состояние в escaping-замыкании?
Зачем Swift требует объявлять weak-ссылку переменной, а не константой?
Какая особенность подсчёта ссылок мешает ARC автоматически освобождать недостижимый цикл сильных ссылок?
Разбор ошибки: к чему приводит обращение к unowned(unsafe)-ссылке после уничтожения объекта-владельца?
Опишите, кто отвечает за время жизни экземпляра Swift, переданного через Unmanaged.
Почему слабая ссылка в Swift должна быть optional?
Что происходит с числом сильных ссылок на объект при присваивании его weak-ссылке?
Что происходит с временем жизни объекта при чтении weak-ссылки?
Разберите случай: при создании большого числа Objective-C-объектов в цикле память растёт до конца итерации run loop, хотя локальные ссылки уже исчезли. Какой механизм ARC объясняет это?
Объясните механизм: что происходит с экземпляром класса при копировании структуры, содержащей сильное свойство-ссылку на этот экземпляр?
При переназначении последней сильной ссылки на другой экземпляр когда старый объект становится доступен для уничтожения?
При создании callback объект уже существует, но позже переменная service переназначается. К какому объекту обратится callback?
final class Service {
let id: String
init(_ id: String) { self.id = id }
deinit { print("deinit \(id)") }
}
var service: Service? = Service("A")
let callback: () -> Void = { [weak service] in
print(service?.id ?? "nil")
}
service = Service("B")
callback()
Как меняется время жизни экземпляра класса во время вызова функции, если он передан обычным параметром?
В какой ситуации объект Swift может быть уничтожен до конца лексической области видимости и как гарантировать его жизнь до завершения операции с небезопасным указателем?
Что определяет момент уничтожения объекта под управлением ARC, если сильная ссылка всё ещё находится в области видимости?
Сравните поведение слабой и невладеющей ссылки при обращении после уничтожения объекта.
Практическая ситуация: после обнуления внешней ссылки проверьте, будет ли вызван deinit, и объясните механизм.
final class Worker {
lazy var action: () -> Void = {
print(self)
}
deinit {
print("deinit")
}
}
var worker: Worker? = Worker()
worker?.action()
worker = nil
Показано 81–100 из 301