Back to questions
Junior — Middle
84
Можете объяснить, что означает использование слабой ссылки на self в замыканиях?
Answer from AI
sobes.tech AI
Использование слабой ссылки (weak reference) на self в замыканиях в iOS (Swift) помогает избежать циклов удержания (retain cycles), которые приводят к утечкам памяти. Когда замыкание захватывает self как сильную ссылку, и self содержит это замыкание, они удерживают друг друга, и память не освобождается.
Пример:
class MyClass {
var closure: (() -> Void)?
func setup() {
closure = { [weak self] in
guard let self = self else { return }
self.doSomething()
}
}
func doSomething() {
print("Action")
}
}
Здесь [weak self] означает, что внутри замыкания self будет слабой ссылкой, и если объект будет уничтожен, ссылка станет nil, предотвращая утечку памяти.