2013-11-03 4 views
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()에 해결책이 있습니까? ? 나의 첫번째 앱은 그래서 꽤 멍청한 놈, 나는 시도하고 행운과 함께 문제를 해결하기 위해 인터넷의 주위를 살펴 했어있어

...

답변

0

당신은으로 법의 내용을 포장 시도 할 수 @autorelease 블록.

@autoreleasepool { 
... 
} 
+0

@autoreleasepool을 의미합니까? – Yariv

+0

사실, 죄송합니다. – Mundi

+0

@ 몬디는 작동하지 않습니다. –