Я работаю над проектом, в котором мне недавно пришлось выполнить то же, что вы описываете. Я получаю файлы PDF в кодировке base64 в виде строк из веб-службы .NET, которые необходимо декодировать до их оригинала и сохранять как файлы PDF в каталоге документов приложений.
Мое решение было:
- Используйте ASIHTTPRequest для связи с веб-сервисом.
- Затем я использую TBXML , чтобы проанализировать входящий xml и получить base64 как строку NSString.
- Для декодирования строки я использую метод из библиотеки QSUtilities, который называется decodeBase64WithString.
- Наконец, я сохраняю результат с writeToFile NSData.
Я протестировал и успешно использовал этот метод с файлами PDF размером до 25 МБ. У меня также было несколько тестовых прогонов с файлом 48 Мб, но этот файл заставил метод decodeBase64WithString занимать слишком много памяти, и мое приложение упало. Пока не нашли решения для этого ..
Если вы работаете с несколькими большими файлами, обязательно время от времени освобождайте память. Я собрал все свои файлы в один цикл, в котором мне пришлось использовать свой собственный пул nsautorelease и слить его в конце цикла, чтобы освободить любые автоматически освобожденные объекты.