2013-11-03 10 views
7

Così ho ricevo la mia App per catturare una schermata e salvarlo all'album di foto con il codice qui sotto ...core grafico dati raster non rilasciare dalla memoria

- (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]; 
    } 

Come posso rilasciare la memoria assegnato da Core Graphics che detiene lo screenshot dei dati raster?

Il mio progetto sta usando ARC per la gestione della memoria. Durante il test di come l'app sta allocando la memoria, ho notato che la memoria non viene rilasciata dopo aver scattato la schermata, facendo sì che l'app si sia indebolita nel tempo. Il "Sommario di allocazione" in Strumenti mi dice che la categoria di dati è "Dati raster CG" e che il chiamante responsabile è "CGDataProviderCreatWithCopyOfData".

C'è una soluzione a CFRelease(); ?

mia prima App quindi sono abbastanza niubbo, ho avuto uno sguardo intorno al Internet per cercare di risolvere il problema senza fortuna ...

risposta

0

Si potrebbe provare avvolgendo il contenuto del metodo in un @autorelease blocco.

@autoreleasepool { 
... 
} 
+0

intendi @autoreleasepool? – Yariv

+0

Davvero, mi dispiace per quello. – Mundi

+0

@Mundi non funziona. –

Problemi correlati