2009-12-02 11 views
14

Me he referido a esta muy buena referencia: https://stackoverflow.com/questions/1282830/uiimagepickercontroller-uiimage-memory-and-more pero estoy teniendo algunos problemas muy graves. Después de tomar una foto, recibo una advertencia de memoria. Esto es para la primera foto que tomo, no la segunda o la tercera.Advertencia de memoria después de usar UIImagePicker una vez

Me preguntaba si es porque tengo un par de pequeños jpegs cargados desde el directorio de la aplicación en vistas desplazables. La única solución en la que puedo pensar es descargar todo en mi vista principal mientras el UIImagePicker está activo, y volver a cargar todo nuevamente después, pero no estoy seguro de que sea la solución correcta y no estoy seguro de cómo hacerlo.

¿El UIImagePicker usa que tiene mucha memoria? Ni siquiera he llegado al punto de procesar o mostrar la imagen que se necesita. Recibo una advertencia de memoria, incluso si tiro la imagen.

Cualquier ayuda apreciada.

Respuesta

9

Sí, esto sucede. Lo que hay que recordar es que está bien recibir una advertencia de memoria, no significa que eres una mala persona, solo necesitas asegurarte de que tu aplicación no se cuelgue o se confunda en respuesta a la advertencia de memoria.

En particular, debe comprender que la acción predeterminada de UIViewController es descargar sus vistas si no son visibles, y no estarán visibles si se muestra el selector de imágenes de pantalla completa.

+0

Correcto, entonces si entiendo correctamente, no necesito ocultar mi vista mientras se muestra el UIImagePicker, como el controlador de vista ya lo hace, y que puedo obtener una advertencia de memoria después de tomar una imagen. ¿Siempre y cuando no esté haciendo algo exótico (como mostrar una imagen de resolución completa?) –

+0

si su aplicación está usando "demasiada" memoria, y no libera "suficiente" de ella cuando recibe una advertencia de poca memoria, el sistema operativo puede potencialmente matar la aplicación. no hay valores exactos por lo que sé por "suficiente" y "demasiado". –

+0

A partir de esta respuesta (http: // stackoverflow.com/questions/457568/iphone-development-memory-limitation-for-iphone-application/457730 # 457730) parece que obtienes la advertencia a unos 22 MB de uso. Aunque Apple no lo ha confirmado oficialmente. –

1

Lo más probable es que esté utilizando imágenes uneditted, y vuelven a tamaño completo soplado de 1400x1300 que es enorme y w accidente enferma su aplicación, sugiero cambiar el tamaño de las imágenes a la resolución nativa 320x480 iPhone, debe arreglar el problema

+1

Hola, Las imágenes I La visualización es mucho más pequeña que eso, y recibo la advertencia de memoria después de que la cámara toma la fotografía y antes de que tenga la oportunidad de cambiar el tamaño de la imagen, por lo que no estoy seguro de que este sea el problema. –

+0

sí, parece que podría haber otras fugas de memoria en algún lugar aquí – Daniel

+0

, por lo que puede tomar la fotografía e incluso antes de poder seleccionarla es c raspado? – Daniel

45

Para todas las personas que todavía están buscando la respuesta real y no una declaración vaga, miren aquí. Noté que hay cientos de respuestas como "Manipule su memoria" pero eso no responde nada. Espero que esto ayude a alguien más por ahí ...

cambiar los siguientes

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
    [imageView setImage:image]; 
    [self dismissModalViewControllerAnimated:YES]; 
} 

Para la siguiente manera su punto de vista modal descarta antes de su imagen ...

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
    [self dismissModalViewControllerAnimated:YES]; 
    [imageView setImage:image]; 
} 
+0

Esto es realmente una buena idea. Cuando depuro, obtuve las imágenes correctas, pero mi imageView me faltaba. Pero descartando la vista modal temprano, trabaja como el encanto. ¡Gracias! ¡1 de ventaja! – karim

+0

Entonces, ¿por qué funciona esto? –

Cuestiones relacionadas