Мой код перегружает мой iPhone? - PullRequest
2 голосов
/ 25 марта 2011

В моем приложении я поддерживаю объект NSMutableDictionary, который в обычных условиях будет содержать около 400-500 объектов, а в некоторых случаях может содержать 1500-2000.Все содержащиеся в нем объекты являются NSMutableArray объектами, каждый из которых обычно содержит 10-15 объектов (простой расширитель NSObject с добавлением нескольких свойств NSString и NSDate) и может содержать до 50.

По моим подсчетам "сидение штанов" (предполагается, что 100 байт на объект?) Это около 5 МБ на нижней стороне и 80 МБ на верхней стороне, поэтому я не уверен, что этоотличная идея.

На айфоне, насколько большой вы бы хотели, чтобы такая структура была до того, как вам пришлось реализовывать какую-то форму кэширования?

Ответы [ 2 ]

2 голосов
/ 25 марта 2011

Я бы определенно посмотрел на сохранение объектов в основных данных, так как он будет вовремя загружать требуемые объекты и сбивать другие объекты до получения доступа к данным. он очень эффективен, и для облегчения интеграции доступны контроллеры fetchResultController.

2 голосов
/ 25 марта 2011

Учитывая, что у вас может не хватить памяти всего на 20 МБ (на iPhone 3G), вам нужно пересмотреть свой дизайн. 3G имел 128 МБ ОЗУ, 3GS - 256 МБ, а iPhone 4 - 512 МБ, но объем, доступный для вашего приложения, намного меньше. Когда я работал (и работал в пределе) на 3G, я обнаружил, что это число колеблется в пределах 20-25 МБ.

Вопрос в том, зачем вам все объекты в памяти одновременно? Вы можете хранить эти данные на диске, и это может не сильно замедлить работу вашего приложения. Лучше немного его замедлить, чем постоянно достигать порога предупреждения о памяти, когда вам нужно будет либо урезать размер этого словаря, либо найти сбой приложения.

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