Ответ 1
В Xcode 8 вы можете нажать на кнопку "График отладочной памяти", на панели инструментов отладки (показанной внизу экрана):
Просто определите объект в левой панели, который, по вашему мнению, должен был быть освобожден, и он покажет вам график объекта (показан на главном холсте выше). Это очень полезно для быстрого определения, где были установлены сильные ссылки на рассматриваемый объект. Отсюда вы можете начать свое исследование, диагностируя, почему эти сильные ссылки не были разрешены (например, если рассматриваемый объект имеет сильную ссылку от чего-то другого, что должно было быть освобождено, посмотрите на этот граф объектов, и вы можете найти проблема (например, сильные контрольные циклы, повторяющиеся таймеры и т.д.).
Обратите внимание, что на правой панели я вижу дерево вызовов. Я получил это, включив опцию ведения журнала "malloc stack" в настройках схемы:
В любом случае, сделав это, можно затем щелкнуть стрелку рядом с соответствующим вызовом метода, показанным в трассировке стека на правой панели первого снимка экрана выше, и вы можете увидеть, где была установлена эта сильная ссылка:
Вышеупомянутый метод диагностики памяти (и больше) продемонстрирован в последней части WWDC 2016 Visual Debugging with Xcode.
Традиционная техника инструментов (особенно полезная при использовании более старых версий Xcode) описана ниже, в моем первоначальном ответе.
Я бы предложил использовать инструмент "Распределение" инструментов с функцией "Record Reference Counts":
Затем вы можете запустить приложение в разделе "Инструменты", а затем выполнить поиск своего класса, который, как вы знаете, протекает, и развернуть его, нажав на стрелку:
Затем вы можете углубиться в детали и посмотреть трассировку стека, используя панель "Расширенные детали" справа:
На этой панели "Расширенные сведения" сосредоточьтесь на коде черного цвета, а не на системных вызовах серого цвета. В любом случае, на панели "Расширенные сведения" вы можете перейти к исходному коду прямо в Инструменты ::
Для получения дополнительной информации и демонстраций использования инструментов для отслеживания проблем с памятью, пожалуйста, обратитесь к:
- WWDC 2013 видео Исправление проблем с памятью
- WWDC 2012 видео Производительность приложения для iOS: память