iOS - есть ли способ запустить очистку памяти? - PullRequest
0 голосов
/ 21 декабря 2011

Я обнаружил, что (например) объект пользовательского интерфейса, такой как UIPickerView, часто выделяется и освобождается, даже если вызывается соответствующий метод dealloc (доказано с помощью Instruments), куча все еще растет.

IsЕсть ли способ запустить оптимизацию пула автоматического выпуска для улучшения всего сценария?

Моему приложению необходимо сделать фотографию, управлять фотографией и загрузить ее на сервер.Через какое-то время куча становится большой, и, наконец, это приводит к сбою моего приложения.** Я проверил, что нет явной утечки памяти * с использованием инструментов.

Любая помощь или предложение?

Спасибо.

1 Ответ

0 голосов
/ 21 декабря 2011

Вы можете создать свой собственный пул автоматического выпуска в местах, которые имеют смысл для вашего приложения. Следующий способ создания пулов автоматического выпуска работает с ARC или без него.

// Stuff you plan to keep around after finishing the block below
@autoreleasepool {
    // Load an image, send to server
}
// The images are released

Звучит так, будто ваша память выходит из-под контроля. Если вы выполняете свою работу в главном цикле выполнения пользовательского интерфейса, у вас должен происходить автоматический выпуск очень регулярно, поэтому я не уверен, что вам поможет другой пул автоматического выпуска. Возможно, вы храните свои ссылки таким образом, чтобы они не были выпущены, потому что они все еще могут быть использованы. Многие утечки происходят из-за того, что объекты не удаляются из массивов, наборов и словарей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...