2

サイズが 1 GB を超えるビデオ ファイルを保存し、homeDirectory に保存しています。次のように NSData オブジェクトに変換しようとしています

NSData *videoData = [[NSData alloc] initWithContentsOfFile:filePath];

しかし、ここではビデオデータを nil として取得しています。500 MB のビデオを試してみたところ、問題なく動作しています。

NSData に変換する際のサイズに制限はありますか?

4

1 に答える 1

8

これを使ってみてください (iOS 5.0 以降が必要です):

NSError *error = nil;
NSData *data = [[NSData alloc] initWithContentsOfFile:filePath
                                              options:NSDataReadingMappedIfSafe
                                                error:&error];

iOS 5.0 より前では、以下を使用できます。

NSData *data = [[NSData alloc] initWithContentsOfMappedFile:filePath];

これらは、安全であればファイルを仮想メモリにマップし、全体的に使用されるメモリの量を大幅に削減します。

于 2013-09-21T12:30:50.587 に答える