Посмотрите на этом он говорит о изменении размера изображения и так далее правильно:
https://stackoverflow.com/questions/1282830/uiimagepickercontroller-uiimage-memory-and-more
Сво большой учебник по FAQ по UIImagePickerController, UIImage, память и многое другое.
EDIT:
предупреждения памяти чрезвычайно распространены при работе с UIImagePickerController. Это особенно актуально при использовании камеры. Имейте в виду, что, хотя JPG или PNG на диске может составлять всего несколько МБ, несжатое битовое изображение в памяти, используемое для рисования изображения, использует значительно больше.
Там нет ничего, что вы делаете неправильно обязательно, но некоторые усовершенствования могут быть сделаны:
Вместо того, чтобы хранить байты изображения в Core Data, почему бы не записать образ на диск и сохранить путь к файлу в вашей базы данных?
, и если вы используете авторекламу, а не используете так много автореализованных изображений, можете ли вы найти способ управлять своим жизненным циклом напрямую и освободить их раньше?
Ваш лучший выбор - это записать изображения на диск как можно скорее после их обработки и освободить память, которую они используют. Затем сохраните свое местоположение с использованием Core Data вместо исходных данных.
Или даже удалить все загруженные изображения, сохранить их на диск, загрузить новое изображение, затем сохранить на диск, а затем загрузить изображения по пути. что-то вроде того.
вы можете некоторые модифицированный код следующим образом: Getting crash after picking images from UIImagePickerController (Related to memory leak?)
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[self dismissModalViewControllerAnimated:YES];
if (object.imagePath != nil) {
[self deleteImages];
}
dispatch_queue_t image_queue;
image_queue = dispatch_queue_create("com.gordonfontenot.app", NULL);
dispatch_async(image_queue, ^{
NSDate *now = [NSDate date];
NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setDateFormat:@"yyyyMMDDHHmmss"];
NSString *imageName = [NSString stringWithFormat:@"Image-%@-%i", [f stringFromDate:now], arc4random() % 100];
NSString *thumbName = [NSString stringWithFormat:@"%@-thumb", imageName];
[f release];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:imageName];
NSString *thumbPath = [documentsDirectory stringByAppendingPathComponent:thumbName];
NSData *thumbImageData = UIImagePNGRepresentation([UIImageManipulator scaleImage:[info objectForKey:@"UIImagePickerControllerEditedImage"] toSize:CGSizeMake(120, 120)]);
[thumbImageData writeToFile:thumbPath atomically:NO];
dispatch_async(dispatch_get_main_queue(), ^{
object.thumbPath = thumbPath;
[self setupImageButton];
imageButton.enabled = NO;
[self setupChooseImageButton];
});
NSData *fullImageData = UIImagePNGRepresentation([UIImageManipulator scaleImage:[info objectForKey:@"UIImagePickerControllerOriginalImage"] toSize:CGSizeMake(800, 600)]);
[fullImageData writeToFile:fullPath atomically:NO];
dispatch_async(dispatch_get_main_queue(), ^{
imageButton.enabled = YES;
object.imagePath = fullPath;
});
if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) {
UIImageWriteToSavedPhotosAlbum([info objectForKey:@"UIImagePickerControllerOriginalImage"], self, nil, nil);
}
});
dispatch_release(image_queue);
}
Надеюсь, у вас есть достаточно информации, чтобы идти дальше отсюда.
PK
получить iPhone 4.nice: D мне, возможно, понадобится, чтобы получить меня один из них. – Pavan
Знаете ли вы, что это как-то ошибка самого UIImagePicker, или если это связано с размером изображения? –
@stefan_g. Это функция изображения, которое загружает UIImagePicker, но нет необходимости останавливать его при загрузке гигантского изображения, если захочет. Вытягивание изображений с камеры также является громоздким делом ... Лучшая политика - это как можно больше выйти из своего пути. –