据说UIKit调用从iOS 4开始是线程安全的,但是当我尝试在后台线程中渲染PDF页面并从视图中拉出图像时,我得到了大量的泄漏。一旦我把它放在前台,它就没有泄漏。
代码很标准
UIGraphicsBeginImageContext(rect.size);
CGContext ctx = UIGraphicsGetCurrentContext();
// Flip the coordinate system
CGContextTranslateCTM(ctx, 0.0, rect.size.height);
CGContextScaleCTM(ctx, 1.f, -1.f);
// Transform coordinate system to match PDF
NSInteger rotationAngle = CGPDFPageGetRotationAngle(_page);
CGAffineTransform transform = CGPDFPageGetDrawingTransform(_page, kCGPDFCropBox, rect, -rotationAngle, NO);
CGContextConcatCTM(ctx, transform);
CGContextDrawPDFPage(ctx, _page);
UIImage *i = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
如上所述,主线程上有0个漏洞,后台线程漏掉了大量漏洞。知道为什么吗?
答案 0 :(得分:0)
代码没有任何问题,并且不会导致泄漏。
问题是我有一个保留周期,当触发此代码时触发了该周期。奇怪的是,当这些调用发生在主线程上时,我没有看到泄漏,但我确实在后台线程上看到了它们。