2013-11-03 15 views
7

Also meine App erhalte ich einen Screenshot zu nehmen und es in das Fotoalbum mit dem folgenden Code speichern ...Core Graphics Rasterdaten nicht aus dem Speicher Freigabe

- (void) save { 
     UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0.0); 
     [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
     UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 
     UIImageWriteToSavedPhotosAlbum(theImage,nil,NULL,NULL); 
     NSData*theImageData=UIImageJPEGRepresentation(theImage, 1.0); 
     [theImageData writeToFile:@"image.jpeg" atomically:YES]; 
    } 

Wie kann ich den Speicher freigeben von Core Graphics zugewiesen, die die Rasterdaten des Screenshots enthält?

Mein Projekt verwendet ARC für die Speicherverwaltung. Beim Testen der Speicherzuweisung der App habe ich bemerkt, dass nach dem Screenshot kein Speicher mehr freigegeben wird, wodurch die App im Laufe der Zeit träge wird. Die "Zuordnungszusammenfassung" in Instruments sagt mir, dass die Datenkategorie "CG Raster Data" lautet und der verantwortliche Aufrufer "CGDataProviderCreatWithCopyOfData" lautet.

Gibt es eine Lösung in CFRelease(); ?

Meine erste App also bin ich ziemlich noob, ich einen Blick rund um das Internet hatte das Problem ohne Glück zu versuchen und zu lösen ...

Antwort

0

Sie könnten versuchen, den Inhalt des Verfahrens in eine Umhüllung @autorelease Block.

@autoreleasepool { 
... 
} 
+0

meinst du @autoreleasepool? – Yariv

+0

In der Tat, tut mir leid. – Mundi

+0

@Mundi funktioniert nicht. –

Verwandte Themen