У меня есть приложение, которое я разрабатываю, и у него определенно есть проблемы с памятью после длительного использования на iPad mini 1. Отладчик начнет выплевывать предупреждения о памяти до тех пор, пока он не сработает, и я хотел бы знать, какой контроллер в нашем коде вызывает Эта проблема.как отлаживать предупреждения памяти в Swift?
Вот пример отладочного сообщения.
2015-03-11 17:04:02.420 PROJECT_NAME[154:4100] Received memory warning.
Сообщение отладки, которое я получаю, дает временную метку и название проекта с некоторой информацией в скобках. Как я могу использовать это, чтобы найти, какой контроллер вызывает эту проблему? Информация о скобках, по-видимому, не является номерами кодовых строк, поскольку имя не является именем проекта, а не именем файла.
Другая альтернатива, о которой я подумал, возможно, помещает инструкцию печати в контроллеры didRecieveMemoryWarning()
.
Что лучше всего отследить и отладить в Swift?
Дайте мне знать, если мне нужно предоставить дополнительную информацию.
UPDATE
Я также хотел бы знать, о некоторых из наиболее распространенных причин утечек памяти в Swift? В моем случае я использую UITableView, который перемещается через навигационный контроллер в другой UITableView. Второй вид таблицы содержит некоторые пользовательские ячейки, которые используют в основном тексты и небольшие изображения. Я предполагаю, что образы (хотя и небольшие и в основном для астетических целей) являются причиной проблемы. Я собираюсь использовать инструменты, предлагаемые рядом с отладкой, чтобы точно выяснить, что это делает.
UPDATE
Так я играл в профилировщике, пытаясь найти то, что может быть причиной утечки памяти, и выделить из вещей в профилировщике, кажется, код, который код библиотеки, но я после некоторого просеивания найдите некоторые ссылки на материал, который был в моем коде. Одно последовательно повторялось следующим образом.
Этот код находится внутри пользовательской UITableViewCell
просыпаются от метода СИБ, и имеет дело с установкой начального состояния изображения, которое будет меняться в зависимости от состояния данных, который принадлежит к этой ячейке. Я предполагаю, что эта динамическая загрузка изображений может вызвать одну из этих проблем. Вопрос в том, что мне делать, чтобы это исправить?
Вы можете использовать инструмент инструментов –
Профилировщик Allocations может помочь. Таким образом, может быть профилировщик времени, если проблемы с памятью заставляют ваше приложение реагировать медленно. –
Существует множество совершенно разных проблем, которые могут вызвать проблемы с памятью. Общие проблемы включают сильные ссылочные циклы, оставленную память и плохое использование кеша. Вы должны определить, что происходит с утечкой (с помощью инструментов), и это поможет вам сузить проблемы кандидата. – Rob