Разбор большого PLIST и памяти - PullRequest
1 голос
/ 29 ноября 2010

В этом вопросе (http://stackoverflow.com/questions/1267474/itunes-xml-parsing-in-cocoa), Sreelal спрашивает, как улучшить производительность загрузки / разбора большого PLIST. Однако на этот вопрос так и не получил реального ответа (хотя Алекс дал несколько очень полезных указателей).

Питер Хоси отметил, что весь файл загружается в память, даже когда PLIST анализируется, а не выгружается в NSDictionary.

В приложении Какао я работаю с библиотеками Aperture, и у них тоже есть большие файлы PLIST. Каков наилучший подход, чтобы иметь хорошую производительность (скорость) и не требовать, чтобы ваше приложение занимало всю системную память?

Является ли NSXMLParser хорошим подходом? Я предпочитаю придерживаться собственных рамок Apple, если это возможно.

Спасибо

1 Ответ

1 голос
/ 29 ноября 2010

При работе с большими файлами я бы использовал комбинацию NSXMLParser с NSFileHandle , что позволяет вам загружать части данных за один раз, не загружая их все сразу в память. У Apple есть целое видео WWDC на developer.apple.com (если вы зарегистрированный разработчик) под названием Advanced Performance Optimizations для iPhone OS. Они рекомендуют не использовать формат PLIST для очень больших файлов, но затем они обсуждают, как вы можете загружать файлы по частям, которые затем можно использовать с помощью NSXMLParser для их разбора на маленькие части (которые можно даже разделить на несколько потоков). Надеюсь, это поможет!

...