Выпускает ли система мои объекты при завершении работы приложения? - PullRequest
1 голос
/ 04 мая 2011

Мне всегда интересно, что когда я запускаю свое приложение, создается пул приложений, и мое приложение загружается в пул приложений, и когда я нажимаю кнопку «Домой», мое приложение закрывается, т.е. пул, в котором находилось мое приложение, будет прекращено.так что в этом случае, что произойдет с этими объектами, если я не отпущу такие объекты, я думаю, что они тоже будут прекращены, но эта методика не рекомендована Apple, бог знает, по какой причине.Может ли какой-нибудь джентльмен дать мне твердый ответ на этот вопрос, потому что он действительно сильно меня напрягает в эти дни ..

Спасибо и С уважением

Ответы [ 4 ]

7 голосов
/ 04 мая 2011

Всякий раз, когда ваше приложение завершается, выделенная память возвращается в систему. Пулы автоматического выпуска не играют никакой роли в этом случае, если вы это подразумеваете под «пулом приложений». Объекты, которые все еще находятся в памяти в этот момент, не будут освобождены (в том смысле, что система вызовет для вас dealloc), соответствующая память просто помечается как свободная.

1 голос
/ 04 мая 2011

Каждое приложение имеет свое собственное адресное пространство виртуальной памяти почти так же, как вы ожидаете от любого «реального» компьютера. Когда приложение закрывается, вся его виртуальная память исчезает, а операционная система восстанавливает физическую память.

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

AFAIK термин "пул приложений" не имеет никакого значения в iOS.

0 голосов
/ 21 января 2012

В Apple docs четко указано (то же самое в OSX), что при выходе o.s. просто вернуть баран. И в последних ОС аналогичным образом затрагивается также поведение applicationWillTerminate. Логика заключается в том, что бесполезно выпускать часть умирающего приложения.

(см. Также Есть ли недостатки в новом механизме "внезапного завершения" Snow Leopard? для OSX)

Другая проблема в том, что вам нужно особое поведение при выходе: - сохранение настроек - отправить "до свидания" на сервер .. и так далее.

Оба случая, на мой взгляд, неверны: - вы должны сохранять настройки каждый раз, как Apple предлагает для пользовательских настроек, - у сервера должно быть время ожидания.

та же логика будет распространяться на случай сбоев приложения.

0 голосов
/ 04 мая 2011

Автозапуски создаются и уничтожаются много раз во время выполнения вашего приложения (в любом случае, в начале и в конце цикла выполнения).

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

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