UIImage内存释放的问题

2019-07-09  本文已影响0人  南国青天

同样一段代码Swift没有内存问题, 而OC有内存释放的问题. 折腾了一下午才发现OC需要调用CGImageRelease去释放CGImage对象, 真是坑!

Objective-C
- (UIImage *) imageFromSampleBuffer: (CMSampleBufferRef) sampleBuffer {
    CVImageBufferRef buffer = CMSampleBufferGetImageBuffer(sampleBuffer);
    CIImage *ciImage = [[CIImage alloc] initWithCVPixelBuffer:buffer];
    CGImageRef cgImage = [[[CIContext alloc] init] createCGImage:ciImage fromRect:ciImage.extent];
    UIImage *image = [[UIImage alloc] initWithCGImage:cgImage];
    CGImageRelease(cgImage); //没有此句话无法释放内存
    return image;
}

Swift

 private func imageFromSampleBuffer(sampleBuffer: CMSampleBuffer) -> UIImage? {
        guard let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else { return nil }
        let ciImage = CIImage(cvPixelBuffer: imageBuffer)
        guard let cgImage = CIContext().createCGImage(ciImage, from: ciImage.extent) else { return nil }
        return UIImage(cgImage: cgImage)
    }
上一篇下一篇

猜你喜欢

热点阅读