2012-04-19 12 views
0

NSDataNSManagedObjectプロパティにいくつかのPDFを保存しています。私はプロパティのために "外部ストレージを使用"を設定し、それは非常にうまく動作します。私が持っている問題は、PDFが本当に大きいとき、メモリが足りなくなってアプリがクラッシュすることです。チャンクでデータチャンクを直接ディスクに保存する方法はありますか?私はすでにrefreshObject:mergeChanges:を使用していますが、完全なダウンロードが完了するまでデータをメモリに保存しておかなければなりません(そしてそのときだけ私はrefreshObject:mergeChanges:と呼ぶことができます)。もちろん、大規模なドキュメントの場合、それは遅くなるため、私はそれを行う機会がある前にクラッシュします。コアデータと大きなファイルのダウンロード

答えて

0

私があなたの立場にいた場合は、受信PDFファイルであるNSInputStreamを取得し、NSOutputStreamを使用してディスクに直接書き込みます。

コアデータに関しては、メモリに完全にフォルトしようとしないファイルには適切ではないと思います。 Appleはコアデータを使ってディスクに保存されたファイルからNSInputStreamを取得するオプションを提供していません。その場合、ファイルの場所をコアデータに保存し、そのファイルパスでフォールトした後、保存されたパスからNSInputStreamを作成します。

ほとんどの開発者が好むより抽象度が少し低いですが、メモリ不足を引き起こす可能性のあるものを制御する方が良いです。

+0

なぜ私はdownvotedになったのですか?私が間違っているなら、誰かが私を訂正してください。 –

関連する問題