2011-03-08 41 views
5

नमस्ते यहाँ CATiledlayer में पीडीएफ ड्राइंग के लिए मेरे कोडCGContextDrawPDFPage स्मृति रिसाव

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx 
{ 

     CGContextSetRGBFillColor(ctx, 1.0, 1.0, 1.0, 1.0); 
     CGContextFillRect(ctx, CGContextGetClipBoundingBox(ctx)); 
     CGContextTranslateCTM(ctx, 0.0, layer.bounds.size.height); 
     CGContextScaleCTM(ctx, 1.0, -1.0); 
     CGContextConcatCTM(ctx, CGPDFPageGetDrawingTransform(myPageRef, kCGPDFCropBox, layer.bounds, 0, true)); 
     CGContextDrawPDFPage(ctx, myPageRef); 
} 

सब कुछ ठीक है, लेकिन मैं लाइन

 CGContextDrawPDFPage(ctx, myPageRef); 

निम्नलिखित में स्मृति रिसाव चेतावनी मिल गया यहाँ myPageRef CGPDFPageRef

उत्तर

5

है मैंने जिथब से कोड डाउनलोड किया था और कुछ आर & डी बना दिया था और पाया कि,

मैं अपने TiledView की dealloc विधि में CGPDFPageRelease(myPageRef) जारी करने के लिए ..

और इस कोड को मेरी स्मृति रिसाव हल लेखन के बाद ....

// Clean up. 

- (void)dealloc { 
    CGPDFPageRelease(myPageRef); 
    [super dealloc]; 
} 
+0

आप केवल करना चाहिए कि अगर आप इसे कुछ बिंदु पर बनाए रखा। लेकिन अगर आप केवल 'CGPDFDocumentGetPage' कर रहे हैं, तो आपको एक ऑटोरेलीज ऑब्जेक्ट मिलता है और इसलिए आपको इसे रिलीज़ नहीं करना चाहिए। (जाहिर है, अगर आपने इसे बरकरार रखा है, तो निश्चित रूप से आप इसे उत्तर दें क्योंकि इस उत्तर में सुझाव दिया गया है)। – Rob

+0

https://stackoverflow.com/questions/46903182/cgcontextdrawpdfpage-memory-leak-app-crash – Ravindhiran

3

कॉलिंग

CGContextSetInterpolationQuality(context, kCGInterpolationHigh); 
CGContextSetRenderingIntent(context, kCGRenderingIntentDefault); 
CGContextDrawPDFPage से पहले

हल भूल गया मेरी एक समान समस्या है।

क्रेडिट जोहान के इस जवाब को जाता है: CGContextDrawPDFPage taking up large amounts of memory

संबंधित मुद्दे