0

ユーザーがデバイスのカメラで連続して複数の写真を撮ることができるアプリケーションを構築しています。

写真が撮影されるたびに、NSData 変数として配列に送信されます。問題は、配列が 30 枚の写真のようになると、メモリ警告が発生し始め、最終的にアプリケーションがクラッシュすることです。

そのビューを離れると、その配列を NSUserDefaults に保存しますが、これもメモリの警告とクラッシュにつながる可能性があります。

撮影した200枚程度の情報を保存できるようにする必要があります。メモリ警告なしでこれを達成するにはどうすればよいですか?

ところで、私は Apple の SquareCam サンプル コードを使用してカメラで写真を撮っています。

前もって感謝します。

4

2 に答える 2

2

拡大/縮小しないで jpg として保存すると、写真がかなり大きくなる可能性があります。解決策は、サンドボックスの「ディスク」にすぐに保存し (とにかく jpeg 形式を使用することをお勧めします)、保存したファイルのパスのみを配列に保存することです。

サンプル コードを参照してください。

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString* imgName = [NSString stringWithFormat:@"%@.jpg", self.uid];
    NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:imgName];
    NSData *webData = UIImageJPEGRepresentation(self.theImage, 0.5);
    [webData writeToFile:imagePath atomically:YES];
    self.imageURL = imagePath;
于 2013-10-04T11:50:33.187 に答える