Сложно объяснить, что мне нужно в теме письма.Если у вас есть идея получше, не стесняйтесь редактировать ее.
Проблема заключается в следующем:
Приложение iOS обрабатывает документы, всегда по одному за раз.Каждый раз, когда он закрывает документ и открывает новый, даже если это тот же документ, использование памяти постоянно увеличивается, и всегда на одну и ту же величину.
Так что есть утечка.Код не освобождает (выпускает) что-то.Может быть, это массив, который добавляет ссылку на элемент документа и который никогда не очищается, хотя и должен.
Конечно, инструмент утечки здесь не поможет, так как он все "правильный" (он только находит распределение без владельца).
Как мне использовать инструменты (или dtrace), чтобы найти этого пуговца сейчас?Было бы полезно, если бы я мог просто идентифицировать один из тех когда-либо добавленных объектов в Инструментах, остальное будет легко.
До сих пор я использовал инструмент Allocations, устанавливая диапазон проверки на время, когдастарый документ закрывается, а новый открывается.Тем не менее, это показывает тысячи объектов, и только один из них - это тот, который остался от предыдущего документа и все еще жив, хотя не должен.Этот один объект, который мне нужно идентифицировать.
Я предполагаю, что мне нужна функция в инструменте Распределения, которая вычитает все только что добавленные выделения и также вычитает все выделения, которые существовали после запуска - чтоостанутся элементы, созданные новым документом, но не выпущенные с тех пор.Есть ли какой-нибудь способ получить наборы собранных объектов, сгруппировать их в наборы и выполнить операции с наборами, как это?Скорее всего, нет.
Когда каждый раз при открытии документа создается около 20000 объектов, а также задействовано около 50 исходных файлов, просто невозможно выполнить ни просмотр исходного кода, ни проверку всех объектов вручную.
О, и статический анализатор тоже не помогает.