Ответ 1
Swift
Swift использует ARC так же, как Objective-C делает (источник в Apple Docs). Подобные правила применяются для освобождения памяти, удаления всех ссылок на объект и ее освобождения.
Как освободить память
Я предполагаю, что утилизация ресурсов означает их установку на нуль, но что такое "ресурсы, которые можно воссоздать"?
"ресурсы, которые можно воссоздать", действительно зависят от вашего приложения.
Примеры
Скажите, что вы - приложение для социальных сетей, которое имеет дело с большим количеством фотографий. Вы хотите быстрый пользовательский интерфейс, чтобы кэшировать следующие 20 снимков в памяти, чтобы быстро прокручивать. Эти изображения всегда сохраняются в локальной файловой системе.
- Изображения могут занимать много памяти
- Вам не нужны эти изображения в памяти. Если в приложении недостаточно памяти, требуется дополнительная секунда для загрузки изображения из файла.
- Вы можете полностью сбросить кеш изображения, когда получите это предупреждение о памяти.
- Это освободит память, которую требуется системе
Вы создаете удивительную игру с несколькими уровнями. Загрузка уровня в ваш фантастический игровой движок занимает некоторое время, поэтому, если у пользователя достаточно памяти, вы можете загрузить уровень 3, пока они играют на уровне 2.
- Уровни занимают много памяти
- Вам не нужен следующий уровень памяти. Им приятно иметь, но не существенно.
-
LevelCache.sharedCache().nextLevel = nil
освобождает всю память
Что вы не должны освобождать
Никогда не удаляйте материал, который находится на экране. Я видел, как некоторые ответы на связанные вопросы отменяют представление UIViewController. Если вы удалите все с экрана, вы можете сильно свернуть (на мой взгляд).
Примеры
Если у пользователя есть открытый документ, который они редактируют, НЕ снимайте его. Пользователи будут злиться на вас, если ваше приложение удалит свою работу, не будучи сохраненной. (На самом деле у вас, вероятно, должен быть механизм аварийного сохранения, когда это произойдет)
Если ваш пользователь пишет сообщение для вашего сказочного приложения для социальных сетей, не позволяйте их работе пропадать. Сохраните его и попытайтесь восстановить его, когда они снова откроют приложение. Хотя это много работы по настройке, мне нравятся приложения, которые это делают.
Примечание
Большинство современных устройств редко заканчиваются из памяти. Система делает довольно хорошую работу по убийству приложений в фоновом режиме, чтобы освободить память для приложения, работающего на переднем плане. Вероятно, вы видели приложение "открыто" в App Switcher, когда вы открыли приложение, которое оно открыло, в исходное состояние. ОС освободила приложение в фоновом режиме, чтобы освободить память. См. State Restoration для получения информации о том, как избежать этой проблемы.
Если ваше приложение получает согласованные предупреждения о памяти, когда вы не выполняете огромную обработку, убедитесь, что вы сначала не утечка памяти. Обнаружение утечек памяти выходит за рамки этого ответа. Документы и tutorial.