このモジュールは面倒だと思いました。Photolibrary から 100 枚以上の画像をインポートし、ドキュメント ディレクトリに別の名前で保存しています。予想通り、珍しい場所でメモリの問題が発生しました。UIImagePNGRepresenation がファイルをキャッシュしているようです。そのため、300 以上の画像に対して以下のプロセスを実行すると、「全体のバイト数」が 3.00 GB の範囲で表示され、メモリが原因でクラッシュします (割り当てツールでテスト済み)。以下のコードを貼り付けました。このコードに代わるものはありますか
-(void)something
{
NSData *data=nil;
for (int i=0; i<numberOfImages; i++) {
@autoreleasepool {
UIImage *image=[UIImage imageNamed:[NSString stringWithFormat:@"image%d.png",i]];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [[paths objectAtIndex:0] stringByAppendingString:@"directoryname"];
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"image%d.png",i]];
//convert image into .png format
data=UIImagePNGRepresentation(image);
[data writeToURL:[NSURL URLWithString:fullPath] atomically:NO];
}
}
data=nil;
}