Так я разрабатываю приложение IOS, которая в основном выполняет следующие действия: На iPhone это UITabBarController
с пять вкладок, на IPad у меня есть UISplitViewController
с MKMapView
на правой стороне и UITabBarController
с четырьмя вкладки слева. Приложение использует ARC.уменьшить использование памяти
Предположим, что речь идет о достопримечательностях.
В зависимости от текущего города, в котором находится пользователь, мое приложение загружает все достопримечательности этого города на устройство. Как только определенный прицел был загружен, он хранится в моем локальном db, чтобы пользователь не загружал его снова. Если пользователь ищет другой город, будут загружены все достопримечательности этого города. И так далее. Все сохраненные достопримечательности будут перечислены внутри tableView или mapView, отсортированные по их городу.
Прицел состоит из:
- 1-10 изображений
- мета информация (название, подзаголовок, название, описание, адрес, город, страна, рейтинг, ID, широта, долгота ...)
- принадлежит к 1-н категории/теги
приложение позволяет пользователю создавать новые достопримечательности, снимать его, заполнить его мета информацию и загрузить его на моем веб-сервере.
Все это работает нормально, пока загружено только небольшое количество достопримечательностей. Благодаря 40 + локациям, сохраненным в памяти, я получаю предупреждения о памяти и приложение закрывается. Проблема в том, что приложение предназначено для просмотра очень большого количества достопримечательностей, нескольких сотен.
Теперь я хотел бы знать некоторые методы для решения таких проблем с памятью.
Я думаю, моя проблема в том, что с началом моего приложения все локально сохраненные объекты загружаются в массив в качестве источника данных для tableView или mapView. Но так как я хочу их отображать, я не вижу другого выхода, кроме этого.
Как другие приложения имеют дело с огромным количеством пользовательских объектов, состоящих из нескольких изображений и нескольких метаинформаций или подобных? Существует ли какая-то передовая практика для решения этой проблемы?
спасибо, что заблаговременно!
Спасибо за подробный ответ! До сих пор я фактически сохранил изображения в базе данных. Я думаю, что это одна из главных причин, по которым производительность снижается, и я изменю это, чтобы хранить только их пути внутри db. Кроме того, я больше не буду загружать все объекты моего зрения, а только те, которые предназначены для одного города. Если пользователь ищет новый город, приложение может выгрузить предыдущие достопримечательности. Также я никогда не смотрел NSCache или SDWebImage, я предполагаю, что я собираюсь использовать это. – pmk