当我们获得UIView的屏幕截图时,我们通常使用以下代码:
UIGraphicsBeginImageContextWithOptions(frame.size, false, scale)
drawViewHierarchyInRect(bounds, afterScreenUpdates: true)
var image:UIImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
Run Code Online (Sandbox Code Playgroud)
drawViewHierarchyInRect && UIGraphicsGetImageFromCurrentImageContext将在当前上下文中生成图像,但在调用时不会释放 内存UIGraphicsEndImageContext.
内存使用继续增加,直到应用程序崩溃.
虽然有一个词UIGraphicsEndImageContext会CGContextRelease自动调用",但它不起作用.
我该如何释放内存drawViewHierarchyInRect或UIGraphicsGetImageFromCurrentImageContext使用
有没有生成截图没有drawViewHierarchyInRect?
1自动释放:不起作用
var image:UIImage?
autoreleasepool{
UIGraphicsBeginImageContextWithOptions(frame.size, false, scale)
drawViewHierarchyInRect(bounds, afterScreenUpdates: true)
image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
}
image = nil
Run Code Online (Sandbox Code Playgroud)
2 UnsafeMutablePointer:不起作用
var image:UnsafeMutablePointer<UIImage> = UnsafeMutablePointer.alloc(1)
autoreleasepool{
UIGraphicsBeginImageContextWithOptions(frame.size, false, scale)
drawViewHierarchyInRect(bounds, afterScreenUpdates: true)
image.initialize(UIGraphicsGetImageFromCurrentImageContext())
UIGraphicsEndImageContext()
}
image.destroy()
image.delloc(1)
Run Code Online (Sandbox Code Playgroud)