imageIO_PNG_Dataのメモリ使用量が多い
アプリ内でカメラロールから画像を選択して、コレクションビューに表示できるようにしています。
ですが、画像を表示するとメモリを多く消費してしまいます。
Instrumentsで調べるとimageIO_PNG_Dataが原因だということはわかったのですが、どのように直せばいいのかがわかりません。
//カメラロールを起動
- (void)showCameraRoll
{
UIImagePickerControllerSourceType sourceType
= UIImagePickerControllerSourceTypePhotoLibrary;
if ([UIImagePickerController isSourceTypeAvailable:sourceType]) {
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.sourceType = sourceType;
picker.delegate = self;
[self presentViewController:picker animated:YES completion:NULL];
}
}
//カメラロールから画像選択後の処理
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSLog(@"画像選択後の処理");
UIImage *originalImage = (UIImage *)[info objectForKey:UIImagePickerControllerOriginalImage];
UIImage *editImage = (UIImage *)[info objectForKey:UIImagePickerControllerEditedImage];
UIImage *saveImage;
if (editImage) {
saveImage = editImage;
} else {
saveImage = originalImage;
}
//カメラで撮った写真のみカメラロールの保存
UIImageWriteToSavedPhotosAlbum(editImage, nil, nil, nil);
[self addSelectedPicture:self item:saveImage];
[picker dismissViewControllerAnimated:YES completion:nil];
[self.collectionView reloadData];
}
//画像保存処理
+ (void)saveLessons:(NSArray *)lessons
{
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:lessons];
NSString *path = [self makeLibraryPath];
[data writeToFile:path atomically:YES];
}
+ (NSString *)makeLibraryPath
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *dir = [paths objectAtIndex:0];
return [dir stringByAppendingPathComponent:@"data.dat"];
}
どなたか何か分かる方がいましたら教えてください。
よろしくお願いします。