Kel*_*loo 7 core-graphics objective-c swift
我有这个代码转换UIImage为[UInt8](像素)
extension UIImage {
func pixelData() -> [UInt8]? {
let size = self.size
let dataSize = size.width * size.height * 4
var pixelData = [UInt8](repeating: 0, count: Int(dataSize))
let colorSpace = CGColorSpaceCreateDeviceRGB()
var context = CGContext(data: &pixelData,
width: Int(size.width),
height: Int(size.height),
bitsPerComponent: 8,
bytesPerRow: 4 * Int(size.width),
space: colorSpace,
bitmapInfo: CGImageAlphaInfo.noneSkipLast.rawValue)
guard let cgImage = self.cgImage else { return nil }
context?.draw(cgImage, in: CGRect(x: 0, y: 0, width: size.width, height: size.height))
return pixelData
}
}
Run Code Online (Sandbox Code Playgroud)
这个函数被调用很多次,并且通过调试我注意到绘制调用分配+ 1MB(图像大小),在函数结束后没有释放.
在内存调试信息中,这些是大多数内存的负责调用者:
Responsible Library: CoreGraphics
Responsible Caller: CGDataProviderCreateWithCopyOfData
有人可以帮忙解决这个内存泄漏吗?
| 归档时间: |
|
| 查看次数: |
284 次 |
| 最近记录: |