美文网首页
UIImage内存释放的问题

UIImage内存释放的问题

作者: 南国青天 | 来源:发表于2019-07-09 17:21 被阅读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)
        }
    

    相关文章

      网友评论

          本文标题:UIImage内存释放的问题

          本文链接:https://www.haomeiwen.com/subject/culfkctx.html