7

だから私は自分のアプリにスクリーンショットを撮ってもらい、以下のコードでフォトアルバムに保存しています...

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

スクリーンショットのラスター データを保持している Core Graphics によって割り当てられたメモリを解放するにはどうすればよいですか?

私のプロジェクトでは、メモリ管理に ARC を使用しています。アプリがどのようにメモリを割り当てているかをテストすると、スクリーンショットを撮った後にメモリが解放されていないことに気づきました。これにより、時間の経過とともにアプリが遅くなります。Instruments の「Allocation Summary」は、データ カテゴリが「CG ラスター データ」であり、責任のある呼び出し元が「CGDataProviderCreatWithCopyOfData」であることを示しています。

CFRelease(); に解決策はありますか? ?

私の最初のアプリなので、私はかなり初心者です。インターネットを見回して、問題を解決しようとしましたが、うまくいきませんでした...

4

1 に答える 1

0

@autoreleaseメソッドの内容をブロックにラップしてみてください。

@autoreleasepool {
...
}
于 2013-11-03T11:20:29.350 に答える