iPhone: UIImagePickerController Problem of Sorts
-
11-09-2019 - |
Pergunta
Olá pessoas maravilhosas de stackoverflow!
Eu tenho um problema.
Eu estou trabalhando em um aplicativo que irá tirar várias fotos e cada vez que ele vai ampliá-las, mostrar uma pré-visualização, salvá-los e, em seguida, carregar o UIImagePickerController novamente.
Mas depois de tomar cerca de 5 a 6 fotos morre.
Eu acho que ele está morrendo porque eu tenho uma UIImageView que eu definir e depois de tantas fotos do UIImage que eu defini-lo com não faz referência a qualquer coisa.
Eu acho que o culpado está em algum lugar aqui ...
Existe algo que eu estou fazendo errado?
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[backgroundImage setImage: [[UIImage alloc] initWithCGImage:[[info objectForKey:UIImagePickerControllerOriginalImage] CGImage]]];
[backgroundImage setTransform:CGAffineTransformRotate(CGAffineTransformMakeScale(zoom/3, zoom/3), 1.570796327)];
UIGraphicsBeginImageContext([backgroundView bounds].size);
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextFillRect(ctx, [backgroundView bounds]);
[backgroundView.layer renderInContext:ctx];
UIImage* screenImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(screenImage, self, @selector(ImageDidSave:didFinishSavingWithError:contextInfo:), nil);
[self dismissModalViewControllerAnimated:YES];
}
backgroundImage é a que, eventualmente, tenta usar uma imagem que não é mais referenciando nada.
Deixe-me saber como eu posso esclarecer.
Muito obrigado a todos que ficou comigo até aqui!
Solução
Este é um palpite, mas eu aposto que você está ficando sem memória e ser morto. Tente autoreleasing a imagem que você enviar para o fundo nesta linha:
[backgroundImage setImage: [[[UIImage alloc] initWithCGImage:[[info objectForKey:UIImagePickerControllerOriginalImage] CGImage]] autorelease]];