UIImageJPEGRepresentation
Habe ich Schwierigkeiten Suche nach einem memory-leak, welches dann wieder bewirkt, dass meine App zum Absturz. Es scheint, dass der Speicher für die JPEGRepresentation nicht veröffentlicht. Dies ist noch merkwürdiger, weil das NSData-Objekt erstellt, indem UIImageJPEGRepresentation ist nur etwa 300 kb groß ist (hängt auf dem Bild), aber die Speicher-Auslastung springt von etwa 3-5 MB pro Bild in dieser Phase.
Dies ist der code
QueuedObject* queuedObject = [[QueuedObject alloc] init];
[queuedObject setUrl:url];
QueuedObjectData* jsonQueuedData = [[QueuedObjectData alloc] init];
[jsonQueuedData setData:jsonData];
[jsonQueuedData setFilename:@"message.json"];
[jsonQueuedData setContentType:@"application/json"];
[jsonQueuedData setKeyValue:@"JSONMessage"];
[queuedObject addData:jsonQueuedData];
int i=1;
QueuedObjectData* imageData = [[QueuedObjectData alloc] init];
for(id file in files)
{
if(file!=nil)
{
[imageData setData:UIImageJPEGRepresentation(file, 0.8)];
[imageData setFilename:[NSString stringWithFormat:@"image%d.jpg",i]];
[imageData setContentType:@"image/jpeg"];
[imageData setKeyValue:@"image"];
[queuedObject addData:imageData];
i++;
}
}
[[UploadQueue sharedInstance] addObject:queuedObject];
[jsonQueuedData release];
[jsonData release];
[url release];
[imageData release];
[queuedObject release];
Haben Sie vielleicht eine Idee um mir zu helfen
beste Grüße
Manuel
InformationsquelleAutor Manuel | 2012-01-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nun sind Sie mit nur einem
imageData
Objekt in Ihrem Zyklus. So, Sie immer erstellen Sie JPEG-Darstellung, ohne Sie zu löschen. Versuchen Sie, diesen code:Hier Objekt erstellen, verwenden und löschen.
Aber es ist dieser Ansatz falsch? Haben Sie irgendwelche Probleme mit diesem code?
Sorry für die Verwirrung. Der code scheint richtig zu sein, aber in Instrumenten (die Ansicht "Aktivität" - Speicher) sehe ich immer noch viel und viel Speicher Automatismen der App. Gibt es eine Möglichkeit kann ich herausfinden, wo das Speicher-array verwendet? Wenn ich in der Geräte-Zuordnung-tool gibt es nichts auch nur annähernd an den Betrag, den Einsatz hier ;/ (ich spreche etwa 10+ MB für das hinzufügen von 3 Bildern (die sind nur etwa 300 kb pro Stück!) zu meiner queuedObject Objekt)
Die Zuweisungen instrument wird zu verstecken einige memory usage , Speicher, Monitor und andere aussetzen. Bilder, 300 kB komprimiert werden kann viel größer in Erinnerung, weil Sie gewohnt sind, in Ihre unkomprimierte RGBA-Zustand. Wenn Sie möchten, um zu sehen, was schuetzen, die in Ihrer Anwendung über mehrere Pässe, nehmen einen Haufen Schuss in den Zuführungen an jedem Punkt, den Sie wiederholen Sie die gleiche Aktion in Ihrer Anwendung. Die Objekte, die Sie sehen, gibt es bei jedem Durchgang bauen in Speicher, und Sie sollten in der Lage sein zu identifizieren, die Linie, auf der Sie erstellt werden.
Vielen Dank, das hilft eine Menge. Ich glücklich akzeptieren berylliums - und Ihre - Antwort.
InformationsquelleAutor beryllium