2013-12-11 10 views
8

Sono di fronte errore App terminata a causa della pressione di memoria quando acquisisco alcune immagini utilizzando UIImagePickerController Camera.App terminata a causa della pressione di memoria quando si utilizza la fotocamera in iOS 7

Ricevo prima gli avvisi di memoria e poi improvvisamente l'app si arresta in modo anomalo. Questo problema è in iOS 7, in particolare come in iOS 6 sta funzionando bene.

Qualcuno sa perché questo problema di memoria si verifica in iOS 7 sull'utilizzo della fotocamera.

Nota: Ho cercato di ridurre al minimo l'utilizzo della RAM perché potrebbe anche essere il motivo di questa pressione della memoria. Ma continua ad essere avvertito.

+2

Utilizzare lo strumento Allocazioni in Strumenti per vedere esattamente cosa sta consumando la RAM e quando viene assegnato. – NSAdam

+0

Ho eseguito il test anche su iPhone 5 in iOS 7. Funziona perfettamente su iPhone 5. Solo su iPad mini viene visualizzato questo avviso. –

+0

questo è un problema con ipad mini – Saurabh

risposta

5

Ho appena postato questa risposta su un post simile (iOS 7 UIImagePicker preview black screen). Ecco cosa ho detto:

Circa 5 mesi fa il mio team ha scoperto una perdita di memoria con UIImagePickerController. Ogni istanziazione rallentava l'app in modo esponenziale (vale a dire prima alloc-init aveva un ritardo di 1 secondo, il secondo aveva un ritardo di 2 secondi, il terzo aveva un ritardo di 5 secondi). Alla fine, avevamo 30-60 ritardi (simile a quello che stai vivendo).

Abbiamo risolto il problema suddividendo sottoclasse UIImagePickerController e rendendolo un Singleton. In questo modo è stato inizializzato solo una volta. Ora il nostro ritardo è minimo ed evitiamo la perdita. Se la sottoclasse non è un'opzione, prova una proprietà di classe nel tuo viewController e caricali semplicemente come in questo modo.

-(UIImagePickerController *)imagePicker{ 
    if(!_imagePicker){ 
     _imagePicker = [[UIImagePickerController alloc]init]; 
     _imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; 
} 
    return _imagePicker; 
} 

Poi si può chiamare in un secondo momento come:

[self presentViewController:self.imagePicker animated:YES completion:nil]; 

Da quanto ho potuto vedere, questo è solo un problema con l'UIImagePickerController in iOS 7. Le versioni precedenti sembra essere fine.

+1

roba affascinante. - Nota che la tua soluzione _sumera_ che il selettore di immagini verrà utilizzato solo per scattare foto (fotocamera), il che non è necessariamente il caso. – matt

+0

Buon punto. Puoi sempre cambiarlo in qualsiasi momento dicendo, self.imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary. L'idea è che il tuo UIImagePickerController sia inizializzato solo una volta. – eckyzero

+0

Proverò a fondo ma sembra aver risolto il problema. – Camus

Problemi correlati