У меня есть модал, который отображает UIImagePicker и позволяет пользователю сделать фотографию, которая затем помещается в UIImageView.
Время от времени я получаю предупреждение о памяти «Предупреждение о получении памяти», и UIImageView не назначается. Приложение довольно простое, оно не использует много памяти, и кажется, что большую часть времени это связано с ImagePicker как отдельным процессом. Это происходит только при использовании камеры, и это происходит примерно один раз из пяти.
Об этом много говорят , и в большинстве ответов говорится, что «обработайте предупреждение надлежащим образом»; но я не уверен, что это значит - я просто хочу, чтобы снятая фотография отображалась в ImageView! Кажется, это происходит до того, как я могу что-то с этим сделать в делегате UIImagePicker.
Что я могу сделать, чтобы смягчить это?
Вот делегат didFinishPickingImage:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)selectedImage editingInfo:(NSDictionary *)editingInfo {
//set background for image select button, put image reference somewhere to copy image to documents folder and insert into modular's sentence object.
//ImagePicker.jpg needs it's border set to 1px black.
NSLog(@"imagePickerController: selectedimage: %@", selectedImage);
imageViewBehindPhotoBigButton.clipsToBounds = YES;
[imageViewBehindPhotoBigButton.layer setBorderColor: [[UIColor blackColor] CGColor]];
[imageViewBehindPhotoBigButton.layer setBorderWidth: 1.0];
[imageViewBehindPhotoBigButton setBackgroundColor:[UIColor whiteColor]];
[imageViewBehindPhotoBigButton setContentMode: UIViewContentModeScaleAspectFill];
imageViewBehindPhotoBigButton.image = selectedImage;
imageViewBehindPhotoBigButton.hidden = NO;
[choosePhotoBigButton setBackgroundImage:nil forState:UIControlStateNormal];
choosePhotoBarImage.hidden = NO;
choosePhotoText.hidden = NO;
addButton.enabled = YES;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
//because iPad uses a pop up - we don't want to dismiss modals here!
[imagePopupController dismissPopoverAnimated:YES];
}else{
[self dismissModalViewControllerAnimated:YES];
}
}