アプリ内でカメラロールから画像を選択して、コレクションビューに表示できるようにしています。

ですが、画像を表示するとメモリを多く消費してしまいます。
Instrumentsで調べるとimageIO_PNG_Dataが原因だということはわかったのですが、どのように直せばいいのかがわかりません。

Instruments(画像は今回4枚です)

//カメラロールを起動
- (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"];
}

どなたか何か分かる方がいましたら教えてください。
よろしくお願いします。