Fuga detectada al presentar UIImagePickerController

Aquí está el código que utilizo para presentar un UIImagePickerController :

 - (IBAction)takePhoto:(UIButton *)sender { if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { UIAlertController *alert = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Error", nil) message:NSLocalizedString(@"Device has no camera", nil) prefernetworkingStyle:UIAlertControllerStyleAlert]; UIAlertAction *ok = [UIAlertAction actionWithTitle:NSLocalizedString(@"OK", nil) style:UIAlertActionStyleDefault handler:nil]; [alert addAction:ok]; [self presentViewController:alert animated:YES completion:nil]; } else { UIImagePickerController *picker = [[UIImagePickerController alloc] init]; picker.delegate = self; picker.allowsEditing = YES; picker.sourceType = UIImagePickerControllerSourceTypeCamera; picker.videoQuality = UIImagePickerControllerQualityTypeMedium; [self presentViewController:picker animated:YES completion:NULL]; } } 

En este momento ejecute este método (por ejemplo, toque el UIButton ). Puedo ver esto en Instrumentos:

Fugas por Backtrace

Y esto es lo que veo si cambio a Cycles & Roots:

Ciclos y raíces

Entonces, si coloco el cursor sobre la primera fuga y presiono una flecha que aparece, obtengo esto:

introduzca la descripción de la imagen aquí

y si abro el seguimiento de stack para este método veo:

introduzca la descripción de la imagen aquí

Entonces, en su mayoría son llamadas al sistema. Lo mismo vale para otras fugas, solo llamadas al sistema … ¿Entonces esto es un error o? Si abro y elimino el selector de imágenes algunas veces obtengo incluso más filtraciones, mucho más …

¿Alguien ha notado esto?

Debe hacer que el selector UIImagePickerController * sea una propiedad sólida. Entonces esa aplicación tiene una reference global para ese selector y podrás descartarla.