サイズが 1 GB を超えるビデオ ファイルを保存し、homeDirectory に保存しています。次のように NSData オブジェクトに変換しようとしています
NSData *videoData = [[NSData alloc] initWithContentsOfFile:filePath];
しかし、ここではビデオデータを nil として取得しています。500 MB のビデオを試してみたところ、問題なく動作しています。
NSData に変換する際のサイズに制限はありますか?
サイズが 1 GB を超えるビデオ ファイルを保存し、homeDirectory に保存しています。次のように NSData オブジェクトに変換しようとしています
NSData *videoData = [[NSData alloc] initWithContentsOfFile:filePath];
しかし、ここではビデオデータを nil として取得しています。500 MB のビデオを試してみたところ、問題なく動作しています。
NSData に変換する際のサイズに制限はありますか?
これを使ってみてください (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];
これらは、安全であればファイルを仮想メモリにマップし、全体的に使用されるメモリの量を大幅に削減します。