2013-11-03 36 views
7

Bu yüzden bir ekran görüntüsünü almak ve aşağıdaki kodu ile fotoğraf albümü kaydetmek için benim App alıyorum bellekten ben belleğini serbest nasılÇekirdek Grafik raster veri ...

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

serbest bırakmıyoruz Ekran görüntüsü raster verilerini tutan Core Graphics tarafından ayrılmış?

Projem, bellek yönetimi için ARC kullanıyor. Uygulamanın belleği nasıl ayırdığını test ederken, ekran görüntüsünü çektikten sonra belleğin yayınlanmayacağını fark ettim ve uygulamanın zamanla yavaşlamasına neden oldu. Cihazlardaki 'Tahsis Özeti', veri kategorisinin 'CG raster verisi' olduğunu ve sorumlu arayanın 'CGDataProviderCreatWithCopyOfData' olduğunu söylüyor.

CFRelease(); ? İlk Uygulama yüzden oldukça çaylak, ben denemek ve hiçbir şans ile sorunu çözmek için internete bakınız yaşadım ediyorum

...

cevap

0

Bir içine yöntemin içeriğini sarma deneyebilirsiniz @autorelease blok.

@autoreleasepool { 
... 
} 
+0

Yani @autoreleasepool? – Yariv

+0

Gerçekten, bunun için üzgünüm. – Mundi

+0

@Mundi çalışmıyor. –

İlgili konular