2014-01-08 5 views
0

На основе Apple Docs рекомендуемая практика использования пакетов файлов с NSDocument, по-видимому, заключается в сохранении ссылки на корень NSFileWrapper в пользовательской версии NSDocument.NSDocument и NSFileWrapper: стратегия сокращения объема памяти?

Мой вопрос: не означает ли это, что в итоге я получу двойной объем памяти для моего документа?

Представьте простой документ с переменной NSString экземпляра text. Скажем, текст может быть довольно большим.

В readFromFileWrapper:… Я прочитал NSString из данных обертки файла и сохранил его в text. Однако, поскольку файловая оболочка является переменной экземпляра, она является необработанной NSData, хотя все, что мне нужно, это версия NSString.

Есть ли что-нибудь, что говорит против отказа от NSFileWrapper, как только я закончил читать?

Редактировать: Это еще более интересно, когда вы думаете об iOS и UIDocument. У меня есть документ с потенциально сотнями изображений.

ответ

2

Это хороший вопрос, но я собираюсь ответить на него прямо.

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

Если, как только ваше приложение работает, вы обнаружите, что ваши файлы, как правило, очень большие (например, сотни мегабайт), вы можете подумать об оптимизации этого.

Помните, что машины сегодня очень часто имеют 8 ГБ или более оперативной памяти. Для этого требуется много данных. Кроме того, с виртуальной памятью NSFileWrapper будет отображаться в файлах данных, что означает, что они будут хранить память как минимум до тех пор, пока они будут прочитаны, но после этого они могут быть выгружены с нулевой стоимостью (они не нужны для записи на диск, поскольку они уже включены на диске).

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^