Je fais des recherches parce que mon application viewer pdf continue à se briser autour de la page 4/5 en raison d'un poireau mémoire qui se produit chaque fois que vous tournez une page ...iphone CGPDFDocumentRef poireau mémoire énorme
Il se trouve que apple a un bug.
voir ici: https://devforums.apple.com/message/9077#9077
de ce que je comprends que vous avez à libérer & conserver le document pdf à chaque fois que vous changez de page.
mais je ne peux pas le faire fonctionner (ce code est dans une sous-classe de 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
mon pdf est arrivé ici dans un 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;}
je peux » Je n'ai rien trouvé sur google et j'ai lu la documentation toute la journée.
Des idées?
comment ???? je ne peux pas voir aucune information où – user422241
je vais télécharger sdk 4.0 je vais vous dire si le bug est corrigé – user422241
Wow - est-ce un post récent? Mais vous pourriez juste avoir raison. Il n'y a pas de Create: s etc qui indiquerait la propriété d'une page lors du dessin - Je suppose que toute la mémoire lors du dessin page par page est "accrochée" à la référence du document original (qui inclut en effet le mot Create, CGPDFDocumentCreateWithURL, qui serait indiquer la propriété)? D'une manière ou d'une autre, comment seriez-vous capable de libérer la mémoire des pages dont vous n'avez plus besoin si vous n'en avez jamais reçu la propriété exclusive? – Jonny