Mam problem z wyciekiem pamięci. Myślę, że ten kod nie działa poprawnie?
UseCase to:
Zrób zdjęcie pełnoekranowe (portret) i zapisz w UIImageview.
Problem: wykonane zdjęcie nie było równe zapisanemu obrazowi. Po zapisaniu obrót obrazu w moim widoku UIImage był poziomy.
Rozwiązanie: zmień orientację obrazu (patrz. RemoveRotationForImage)
Nowy problem: czasami widok się zawiesza, jeśli zrobię zdjęcie i naciśnie przycisk „użyj obrazu”. I wycieki pamięci.
Jak mogę rozwiązać ten problem?
{
-(IBAction)takePhoto:(id)sender{
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = NO;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:picker animated:YES completion:NULL];
}
{
-(UIImage *)removeRotationForImage:(UIImage*)image {
if (image.imageOrientation == UIImageOrientationUp) return image;
UIGraphicsBeginImageContextWithOptions(image.size, NO, image.scale);
[image drawInRect:(CGRect){0, 0, image.size}];
UIImage *normalizedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return normalizedImage;
}
{
-(void)imagePickerController:(UIImagePickerController *)imagePickerController didFinishPickingMediaWithInfo:(NSDictionary *)info {
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
chosenImage = info[UIImagePickerControllerOriginalImage];
UIImage *imageWithCorrectOrientation = [self removeRotationForImage:chosenImage];
..
..
..
}
Odpowiedzi:
0 dla odpowiedzi № 1Mamy również podobny problem. Utworzyłem wątek @ https://stackoverflow.com/questions/42177221/iphone-app-crashes-randomly-while-capturing-more-than-100-photos-uiimagepickerco link też. Prosimy o przedstawienie opinii, jeśli została ona rozwiązana za Ciebie.