3

ビデオ ファイルを NSData にロードしたいのですが、dataWithContentsOfFile: を使用すると、ファイルが大きすぎると多くのメモリが消費されます。オフセットと長さを含むファイルの特定のデータを取得するにはどうすればよいですか。動画ファイルを分割してアップロードする必要があります。

4

3 に答える 3

1

これ

NSData *data = [NSData dataWithContentsOfMappedFile:<path>];
NSRange first4k = {0, MIN([data length], 4096)};
return [data subdataWithRange:first4k];

すべてをロードせずに、ファイルの最初の 4k のみを提供します。

ただし、dataWithContentsOfMappedFile: は iOS5 で廃止されました。

私は推測します - 警告: 未テスト! -

+ (id)dataWithContentsOfURL:(NSURL *)aURL options:(NSDataReadingOptions)mask error:(NSError **)errorPtr

マスクを

NSDataReadingMappedIfSafe

また

NSDataReadingMappedAlways

仕事もするべきです。

しかし、それはiOS5で新しくなりました。

于 2012-05-16T08:47:33.287 に答える
0

Cocoa is my Girlfriend の参考になりそうな記事はこちら

数週間前、Matt Long はアプリのメモリ不足の問題を抱えていました。彼はロードして処理する必要のある膨大なデータ ファイルを持っていましたが、そのメモリ ヒットはアプリが耐えられる以上のものでした。それは NSData に問題なくロードされますが、彼がそれを完了する前に、アプリはメモリ不足になり、終了します。

于 2013-02-12T16:57:48.297 に答える