UIImagePickerController wurde aufgrund von Speicherdruck beendet

9

Ich habe einen UIViewController mit:

%Vor%

und mit einem Button präsentiere ich diesen mainPicker wie:

%Vor%

Das erste Problem ist;

%Vor%

Auch wenn dieser Ansichtscontroller angezeigt wird, gibt es mindestens zwei Speicherwarnungen.

Nachdem ich ein Foto gemacht habe, wird es noch schlimmer. Es ist buchstäblich Spamming "Received Speicher Warnung.".

Hier ist ein Instrument screenshot, hoffe es würde helfen.

Der Speicher ist am Anfang etwa 4 MB groß. Nach dem Fotografieren geht es bis zu 10 MB. Während ich ablehne, speichere ich die UIImage, also sind es nach der Entlassung fast 30 MB. (Dieser Peak des Speichers wird wahrscheinlich von writeToFile: verursacht. Dieses Leck gibt es auch nur etwa 600 Bytes.)

Derzeit teste ich auf dem iPhone 5S mit iOS 7.

Ich habe versucht, Zombies zu aktivieren, den Picker nach einer Weile zu versenden, Bearbeitung zu erlauben / zu verbieten usw. Keiner von ihnen hat funktioniert. Außerdem versuche ich nicht sofort nach dem Laden des View-Controllers die Picker-Ansicht darzustellen.

Zusätzliche Anmerkung, ich habe die Funktionen in der Antwort verwendet, und hier sind die Protokolle;

%Vor%

Überwachen der Speichernutzung in iOS

Ist es nicht seltsam, 32 MB freien Speicher im Gerät zu sehen, während Instruments eine andere Geschichte erzählt?

    
EDUsta 18.08.2014, 17:03
quelle

1 Antwort

1

Hier sind ein paar Erklärungen, die Ihnen helfen, Ihr Problem zu lösen.

Zunächst ist das Zombies-Diagnose-Tool dazu gedacht, Abstürze zu debuggen, bei denen auf Speicher zugegriffen wird, auf den bereits zugegriffen wurde. Dies scheint hier nicht dein Problem zu sein und somit wird das Zombies-Tool für dieses spezielle Problem nutzlos sein.

Zweitens zeigt der Screenshot, den Sie uns zur Verfügung gestellt haben, die Leaks-Instrumente. Die Elemente, die Sie in dieser Liste sehen, sind Objekte, die Ihr Programm zugewiesen und vergessen hat, ohne sie zuvor freigegeben zu haben. Das bedeutet, dass Sie keinen einzigen verbliebenen Zeiger auf den Speicher haben, den die Instrumente kennen. Das Reparieren dieser Lecks ist ein erster Schritt zur Behebung der Speicherwarnungen.

Drittens wird das Reparieren Ihrer Lecks wahrscheinlich nicht ausreichen, um Ihre Speicherwarnungsprobleme zu beheben. Diese Warnungen weisen darauf hin, dass Sie zu viel iOS-Speicher verwenden. Wenn man bedenkt, dass Ihre Lecks nur 600 Bytes ausmachen, scheint das Problem Ihre verlassene Erinnerung zu sein. Verlassener Speicher ist Speicher, den Sie zugeordnet haben und zu dem Sie noch Live-Referenzen haben, obwohl sie wahrscheinlich nie wieder von Ihrer Anwendung verwendet werden.

Um Ihnen bei der Behebung Ihrer Probleme zu helfen, finden Sie hier einige relevante Dokumentationen, um sowohl Speicherlecks als auch verlassenen Speicher mit Hilfe von Instrumenten zu beheben:
Ссылка
Ссылка

Hier ist auch ein nützlicher Blogbeitrag über verlassene Erinnerung: Ссылка

    
Dalzhim 05.05.2015 04:53
quelle