Hi there,
let me share the piece of code with you, that finally solved my memory issues!
Code:
//this is my ViewController.h
@interface myViewController: UIViewController <UIImagePickerControllerDelegate> {
UIImagePickerController *picker;
}
@property (nonatomic, retain) UIImagePickerController *picker;
- (IBAction)openPhotolibrary:(id)sender;
- (void)useImage:(UIImage *)image;
@end
Code:
//this is inside my ViewController.m
- (IBAction)openPhotolibrary:(id)sender {
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
//Now this seems to do the trick. The picker only gets allocated once. Therefore no memory issues any longer!
//Before I did it this way, my app crashed after picking 25 images. This one still was OK after picking about 50 images.
if (picker == nil) {
picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
picker.allowsImageEditing = YES;
picker.delegate = self;
}
[self presentModalViewController:picker animated:YES];
}
}
- (void)useImage:(UIImage *)image {
//add code to use the picked image
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)CurrentPicker {
//hide the picker if user cancels picking an image.
[[CurrentPicker parentViewController] dismissModalViewControllerAnimated:YES];
}
- (void)dealloc {
[picker release];
[super dealloc];
}
Hope this helps.