2013-12-11 3 views
8

Ich habe Fehler App aufgrund von Speicherdruck beendet, wenn ich einige Bilder mit UIImagePickerController Kamera erfassen.App aufgrund von Speicherdruck beendet, wenn die Kamera in iOS 7

Ich empfange Speicherwarnungen zuerst und dann stürzt plötzlich App ab. Dieses Problem ist in iOS 7 speziell wie in iOS 6 funktioniert es gut.

Weiß jemand, warum dieses Speicherproblem in iOS 7 bei der Verwendung der Kamera auftritt.

Hinweis: Ich habe versucht, RAM-Nutzung zu minimieren, weil es auch der Grund für diesen Speicherdruck sein kann. Aber immer noch Warnung bekommen.

+2

Verwenden Sie das Werkzeug "Zuordnungen" in den Instrumenten, um genau zu sehen, was Ihren RAM verbraucht und wann er zugewiesen wird. – NSAdam

+0

Ich habe in iPhone 5 auch in iOS 7 getestet. Es funktioniert gut in iPhone 5. Nur in iPad Mini bekommen diese Warnung. –

+0

das ist ein Problem mit ipad mini – Saurabh

Antwort

5

Ich habe gerade diese Antwort auf einen ähnlichen Beitrag (iOS 7 UIImagePicker preview black screen) geschrieben. Hier ist, was ich gesagt habe:

Vor etwa 5 Monaten entdeckte mein Team ein Speicherleck mit UIImagePickerController. Jede Instantiierung verlangsamte die App exponentiell (d. H. Das erste Alloc-Init hatte eine Verzögerung von 1 Sekunde, das zweite hatte eine Verzögerung von 2 Sekunden, das dritte hatte eine Verzögerung von 5 Sekunden). Schließlich hatten wir 30-60 Verzögerungen (ähnlich wie bei Ihnen).

Wir haben das Problem gelöst, indem wir UIImagePickerController von der Klasse subclassing abschnitten und es zu einem Singleton machten. So wurde es nur einmal initialisiert. Jetzt ist unsere Verzögerung minimal und wir vermeiden das Leck. Wenn Unterklassen keine Option ist, versuchen Sie eine Klasseneigenschaft in Ihrem ViewController und laden Sie sie einfach wie in diesem Fall.

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

Dann können Sie es einfach anrufen später wie:

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

Von dem, was ich sagen könnte, das ist nur ein Problem mit dem UIImagePickerController in iOS 7. Frühere Versionen in Ordnung zu sein scheint.

+1

Faszinierende Zeug. - Beachten Sie, dass Ihre Lösung akzeptiert, dass die Bildauswahl nur für die Aufnahme von Bildern (Kamera) verwendet wird, was nicht unbedingt der Fall ist. – matt

+0

Guter Punkt. Sie können sie jederzeit ändern, indem Sie self.imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary sagen. Die Idee ist jedoch, dass Ihr UIImagePickerController nur einmal initialisiert wird. – eckyzero

+0

Ich werde gründlich testen, aber es scheint das Problem gelöst zu haben. – Camus

Verwandte Themen