Для обнаружения циклических ссылок в Xcode используй эти основные инструменты:
Когда цикл выявлен, применяй одну из следующих стратегий:
Слабые ссылки — используй weak, когда объект может стать nil в течение своего времени жизни:
weak var delegate: SomeDelegate?
Бесхозяйные ссылки — используй unowned, когда объект гарантированно переживёт ссылку:
unowned let owner: Owner
Списки захвата для замыканий — предотвращай сильный захват self замыканиями:
someObject.completion = { [weak self] in
self?.doSomething()
}
weak вместо unowned в большинстве случаев, так как это безопаснее — обращение к освобождённой unowned-ссылке вызывает краш[weak self] в замыканиях как привычку по умолчанию, особенно с escaping-замыканиями или коллбэкамиMemory Graph Debugger позволяет тебе остановить приложение и визуализировать все активные ссылки на объекты, что полезно для визуального выявления неожиданных циклических ссылок.
Новый — ещё не проверен сообществом
Вы