Capture list задаёт, как closure захватывает внешние значения (weak/unowned/copy); [weak self] избегает сильного retain cycle с объектом.
Разбор
- После
weak self становится optional — обычно guard let self.
[unowned self] — non-optional, но краш если объект уже deallocated.
- Захват конкретных свойств:
[weak self, url].
- Типичный цикл: объект → closure → self.
Пример
api.fetch { [weak self] data in
self?.render(data)
}
Итог
[weak self] — стандартная защита от циклов в escaping колбэках.