2010-08-23 4 views
0
내 PDF 뷰어 응용 프로그램 때문에 당신이 페이지를 켤 때마다 발생하는 메모리 부추 페이지 4/5 주위에 충돌 유지하기 때문에 내가 연구를 해왔

...아이폰 CGPDFDocumentRef 거대한 메모리 부추

그것은 밝혀 사과에는 버그가 있습니다.

는 여기를 참조 : 나는 당신을 이해하는 것과 https://devforums.apple.com/message/9077#9077

PDF 문서 당신이 페이지를 변경할 때마다 유지 &를 해제해야합니다.

그러나 나는 (이 코드에 UIView의 하위 클래스에) 동작하지 않습니다 :

- (void) drawInContext: (CGContextRef) ctx { 
CGPDFDocumentRelease(__pdfDoc); 
CGContextSetRGBFillColor(ctx, 1.0, 1.0, 1.0, 1.0); 
CGContextFillRect(ctx, CGContextGetClipBoundingBox(ctx)); 
CGContextTranslateCTM(ctx, 0.0, self.bounds.size.height); 
CGContextScaleCTM(ctx, 1.0, -1.0); 
CGContextConcatCTM(ctx, CGPDFPageGetDrawingTransform(pdfPage, kCGPDFCropBox, self.bounds, 0, true)); 
CGContextDrawPDFPage(ctx, pdfPage);NSLog(@"DONE!"); 
CGPDFDocumentRetain(__pdfDoc);} 
@end 

내 PDF가의 ViewController에 여기에 도착한다 :

- (CGPDFPageRef) pdfPage: (NSInteger) index { 
if(! __pdfDoc) { 
__pdfDoc = CGPDFDocumentCreateWithURL((CFURLRef)[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"mybook" ofType:@"pdf"]]);} 
if(__pdfDoc) { 
size_t pdfPageCount = CGPDFDocumentGetNumberOfPages(__pdfDoc); 
index++; 
if(index < 1) 
index = 1; 
if(index > pdfPageCount) 
index = pdfPageCount; 
CGPDFPageRef page = CGPDFDocumentGetPage(__pdfDoc, index); 
return page;} 
return nil;} 

I 수 ' Google에서 아무 것도 찾지 못해 하루 종일 문서를 읽었습니다.

아이디어가 있으십니까?

답변

0

예. 곤충. 페이지를 그릴 때 전체 문서를 열거 나 닫아야합니다. 젠장.

(I이이 3.2.x에서 해결 생각 를)

+0

방법 ???? 어떤 정보도 볼 수 없습니다. – user422241

+0

메신저 SDK 4.0을 다운로드 할 예정입니다. 버그가 수정되면 알려 드리겠습니다. – user422241

+0

와우 - 최근 게시물입니까? 하지만 네가 옳을 수도있어. Afaik에는 Create가 없습니다 : 드로잉 할 때 페이지의 소유권을 나타낼 수있는 것들 - 페이지별로 드로잉 할 때 모든 메모리가 원래 문서 참조에 매달려 있다고 생각합니다. (실제로 Create라는 단어, CGPDFDocumentCreateWithURL을 포함합니다. 소유권을 나타냄)? 어떤 방식 으로든, 당신이 그 (것)들의 유일한 소유권을 결코받지 않는 경우에 이제까지 어떻게 이제까지 필요로 한 페이지의 기억을 해방 할 수있을 것입니까? – Jonny

관련 문제